4月17日

オブジェクトの比較

前回は、オブジェクトの同一性を示すためにequals()メソッドのオーバーライドを作成した。今回は、異なるオブジェクトの順序付けに関する実装を行う。

ソートとComparator

オブジェクトをソートするには、オブジェクトを比較する仕組みが必要。そのためのインタフェースが Comparator。

Comparatorは比較のためのメソッド compare()を定義している。

Comparator の Javadoc

int compare(T o1, T o2)
パラメータ:
o1 - 比較対象の最初のオブジェクト
o2 - 比較対象の 2 番目のオブジェクト 
戻り値:
最初の引数が 2 番目の引数より小さい場合は負の整数、両方が等しい場合は 0、最初の引数が 2 番目の引数より大きい場合は正の整数 
例外: 
ClassCastException - 引数の型がこのコンパレータによる比較を妨げる場合

テキストの例題を入力して動かしてみる

テキストでは同一ファイル内にComparatorを作成しているが、実際には別ファイルで作成すること。

独自クラスに対して実装してみる

タイトル、作者、作成日、ファイルサイズ、長さ(時間)の5つの属性を持つ Media クラスを作成して、それを比較するための Comparator を実装する。

Eclipseで簡単にクラス Media を作成する手順。

  1. 新規クラスでMediaを作成する。
  2. 5つのインスタンス変数を定義する。
  3. Eclipseの「ソース」メニューから「setter/getterの生成」を選択する。
  4. 生成する属性にチェックを入れて「OK」する。

Media のタイトルを比較するための MediaTitleComparator を作成する。クラスを作成するときにインタフェース Comparator を追加しておくこと。

MediaTitleComparator を右クリックして新規JUnitテストケースを作成する。テストメソッドは compare() を選択して「完了」する。

テストが生成されたら、テストを実行して失敗することを確認する。

タイトルを比較するテストを追加する。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です