この記事について
OracleJavaSE11 goldを勉強していた時になかなか覚えられないな〜っとなっていた内容を毎回見ることができるようにこちらの書籍で勉強していた時のまとめたものです!
おすすめ書籍(勉強開始時点の書籍最新版を購入しましょう)
各カテゴリごとでまとめていますので隙間時間に見てみてください。
コレクション
Object型として扱うことができるが取り出すときに互換性のない型にダウンキャストすると例外発生する
ボクシング
オートボクシングはプリミティブ←→参照型だけなので注意
ジェネリクス
<>
ダイヤモンド演算子、クラス内に記述される型パラメーター(T)を置き換える
総称型
ジェネリクスを使ったクラスのこと
型推論使用可能箇所(型を書かないで<>のみの場合)
変数への代入、メソッドの戻り値、メソッド呼び出しの引数
制約付き型パラメーター
T extends Aと記述することで、A型のクラスまたはサブクラスであることを保証できA型のクラスが持つメソッドを記述できる
非境界ワイルドカード
<?>のこと、実行時まで型パラメーターはわからない、メソッドの引数で使用される。
クラス、メソッドを非境界ワイルドカードにした場合、メソッドの戻り値はobject型になる
メソッドの引数はnullリテラルしか認められない
上限境界ワイルドカード
? extends Aのように、制約付き型パラメーターと同じ。
メソッドの戻り値は任意の型(この場合はA)になる
メソッドの引数はnullリテラルしか認められない(ポリモーフィズムなため)
下限境界ワイルドカード
? super B
メソッドの戻り値はobject型になる(型が確定しないため)
メソッドの引数は任意の型(この場合はBかBのスーパークラス)になる
変性
参照型をどの型で扱えるようにするのか
共変性
サブクラス型の代入を許す、ポリモーフィズム
非変性
サブクラス型の代入を許さない、ジェネリクス
反変性
さらにスーパークラス型の代入を許す
java.util.List
要素に番号をふって管理するインタフェース
arraylist
動的配列
要素内の処理は高速、新しい要素を加えバッファを越えた時、全てコピーして置き換えるので処理が遅くなる
読み込みは早いが書き込みが遅い
linkedlist
数珠繋ぎで互いにリンクを持つ配列
要素へのアクセスは先頭または末尾からのため処理が遅い
読み込みは遅いが書き込みは早い
vector
マルチスレッドに対応しているがパフォーマンスは悪い
java.util.Queue
FIFOのデータ構造を定義したインタフェース
add()
末尾から詰め込む
java.util.Deque
両端キュー。デックと読む。取り出す時は先頭から
addfirst()
先頭から詰め込む
addlast()
末尾から詰め込む
java.util.Set
重複しないことを保証するコレクションインタフェース
hashset()
実現クラス。順序を保証しない
treeset()
実現クラス。順序を保証する。自然順序か引数で渡したcomparaterに準拠する
java.util.Map
一意のキーと値を結びつける
ディクショナリ形式
説明 | |
---|---|
put() | |
get() | |
keyset() | キーをまとめてset型で返す |
entryset() | mapからmap.entryの集合を取り出す |
entry() | map.entryのみの生成だがstaticで変更不可 |
ofentreis() | map.entryからmapを作成するがstaticで変更不可 |
map.entryインタフェース
キーと値のペアを管理する、mapにputした時点で生成
getkey()
getvalue()
java.lang.comparableインタフェース
カプセルオブジェクトで実現する。
compareToも実現しなければいけない。アルゴリズムは一つのみ
compareTo()
整数昇順で並び替えを表現する
自分自身が本来の並びから相手よりも後ろにいるなら-1
自分自身が本来の並びから相手より前にいるなら1
同値なら0
java.util.collections
sort()
compareToを使用してオブジェクトを並び替える
java.util.comparaterインタフェース
並び替えの方法を記述する。
sortメソッドの第二引数で利用する
関数型インタフェース。
comparater
int compare(T,T)
メソッドにcompareToを使用した処理を実装する
collections.sortに引数で渡すとそれをもとにソートされる