Java SE7 Gold をとりたい…!
本日は第7回目です。
6章の半分を進めました。
今日のこぼれ話
お久しぶりの勉強です。
別にJavaが嫌になったとかそういうわけではなく、単純に朝時間がとれなかったというのが原因です。
朝の勉強はいいですね。電車も空いてますし、頭も(比較的)さえてますし、誘惑や障害も少ない気がします。
特に資格の勉強にはもってこいの時間ですよ。是非。
人は何故、早起きを他人に押し付けたがるのか?朝活する人はなぜ押し付けがましいのか?
本日知ったこと(6章 1/2)
-
Collection
-
List
クラス 特徴など ArrayList おなじみ ランダムアクセス得意 挿入/削除不得意 非スレッドセーフ LinkedList 挿入/削除得意 ランダムアクセス不得意 非スレッドセーフ Vector ArrayListのスレッドセーフ版 パフォーマンス考慮してつかう -
Set
- 一意性判定には
equals()
が使われる
クラス 特徴など HashSet おなじみ 要素へのアクセス高速 順序付け無し 非スレッドセーフ TreeSet 要素へのアクセス低速 ソート済み 非スレッドセーフ LinkedHashSet HashSetの挿入順保持版 ソートではないので注意 - 一意性判定には
-
Queue
- 操作失敗時に例外の発生するものと、特殊値(null/falseなど)を返すメソッドがある
操作 例外発生版 特殊値返却版 要素の挿入 add(E e) offer(E e) 先頭の要素を取り出し削除 remove() poll() 先頭の要素を取り出し element() peek() -
Deque(デック)
- LinkedList は Dequeインタフェースを実装する
操作 例外発生版 特殊値返却版 先頭へ要素の挿入 addFirst(E e) offerFirst(E e) 先頭の要素を取り出し削除 removeFirst() pollFirst() 先頭の要素を取り出し getFirst() peekFirst() 末尾へ要素の挿入 addLast(E e) offerLast(E e) 末尾の要素を取り出し削除 removeLast() pollLast() 末尾の要素を取り出し getLast() peekLast()
-
-
Map
-
MapはCollectionの派生クラス(インタフェース)ではない
クラス 特徴など Hashtable 非nullのオブジェクトがキー/値となる スレッドセーフ HashMap おなじみ Hashtableのnull使用可・非スレッドセーフ版 LinkedHashMap キー挿入の順序を保持するHashMap TreeMap NavigableMapを実装する(Java1.6から) キーで昇順ソート 非スレッドセーフ -
NavigableMap
- SortedMapのサブインタフェース
- 指定されたキーに近い要素を返すメソッドが定義されている
メソッド 概要 higherKey(K key) 指定されたキーよりも確実に大きいキーの中で最小のものを返す lowerKey(K key) 指定されたキーよりも確実に小さいキーの中で最大のものを返す higherEntry(K key) 指定されたキーよりも確実に大きいキーの中で最小のものをキーとするエントリを返す lowerEntry(K key) 指定されたキーよりも確実に小さいキーの中で最大のものをキーとするエントリを返す subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) fromKey~toKeyまでの部分ビューを返す booleanの引数は境界を含めるかどうか
-
-
ジェネリクス
- メソッド定義でのジェネリクス
- 定義方法
public <T> T method(T t) { ... }
- 呼び出し方
obj.method(s);
orobj.<String>method(s);
- 定義方法
- ワイルドカード
-
List<? extends Super>
- Superを親に持つクラス型の要素を格納
- 要素の追加はできない
- Superがインタフェースでも
extends
-
List<? super Sub>
- Subの親クラス型の要素を格納
- 型パラメータに一致する要素を追加できる
-
- メソッド定義でのジェネリクス
知っているようで、なかなか奥が深いコレクションの世界。