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


Java SE7 Gold をとりたい…!

本日は第8回目です。
6章の残り半分を進めました。

今日のこぼれ話

勉強で使っている参考書は全11章なので、折り返しといったところでしょうか。
やはりどこかへアウトプットすると、一人で勉強していても心細くならずに済みますね。
これから後半へ行くほど聞いたことのないワードがあふれてくると思いますが、めげずに早起きしていきます。

本日知ったこと(6章 2/2)

  • Comparable

    • 自分と他オブジェクトを並び替えるためのインタフェース
    • compareTo(T o)を実装
    • TreeSetへ格納する際、要素が実装していないと実行時エラー
    比較結果 戻り値
    自オブジェクト < 比較対象 負の数
    自オブジェクト = 比較対象 0
    自オブジェクト > 比較対象 正の数
    • SortedSet や SortedMap でComparableを実装したオブジェクトを管理する場合、同値性のチェックはcompareTo()で行う
  • Comparator

    • 2つのオブジェクトを並び替えるためのインタフェース
    • ソート対象のオブジェクトと並び替えルールを独立させて定義している
    • compare(T o1, T o2)を実装
    比較結果 戻り値
    o1 < o2 負の数
    o1 = o2 0
    o1 > o2 正の数
    • SortedSet や SortedMap でComparatorを実装したオブジェクトを管理する場合、同値性のチェックはcompare()で行う
  • Collections

    • static <T extends Comparable<? super T>> void sort(List<T> list)
      • 自然順序付けで昇順ソート
    • static <T> void sort(List<T> list, Comparator<? super T> c)
      • 指定されたコンパレータによってソート
      • 第2引数がnullだと自然順序
  • Arrays

    • static void sort(int[] a)
      • int型の配列をソート
    • static void sort(Object[] o)
      • 自然順序付けで昇順ソート
      • 要素がすべてComparableを実装している必要がある
      • 配列内に複数の参照型を入れているとClassCastException
    • static <T> void sort(T[] a, Comparator<? super T> c)
      • 指定されたコンパレータによってソート
      • 第2引数がnullだと自然順序
      • 配列内に複数の参照型を入れているとClassCastException
    • asList(T... a)
      • 固定サイズのリストへ変換
      • 要素の上書きはできるが、追加/削除はできない(UnsupportedOperationException)
    • binarySearch(int[] a, int key), binarySearch(Object[] o, Object key)
      • 配列から指定の要素を検索し、インデックスを返す(見つからない場合は負の値)
      • 呼び出し前にソートしておかないと結果は保証されない
      • Comparatorを使ってソートしていた場合、binarySearch()の第3引数に同じComparatorを渡さないと結果は保証されない
      • Collectionsにも同様のメソッドがある

Comparableは自分を並び替え、Comparatorは他人を並び替え、というのは
OCJP Gold SE 7 認定資格試験 ポイント解説セミナー(今も開催しているのかは謎です)で聞いた解説です。
受講した当時はとてもやる気になって、ひと月以内に受験しようなんて思っていたのですが、あれから早幾月…。