Java SE7 Gold 取得を目指して (7)


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); or obj.<String>method(s);
    • ワイルドカード
      • List<? extends Super>
        • Superを親に持つクラス型の要素を格納
        • 要素の追加はできない
        • Superがインタフェースでもextends
      • List<? super Sub>
        • Subの親クラス型の要素を格納
        • 型パラメータに一致する要素を追加できる

知っているようで、なかなか奥が深いコレクションの世界。