- 履歴一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Java/Collection要素を実装する へ行く。
- 1 (2013-11-27 (水) 07:58:31)
キーワード†
- Java
- Collection
compareTo() とequals() の一貫性†
Collectionの要素にしたいオブジェクトのクラスを自作するとき、次のことに気をつけなければいけません。
- compareTo() とequals() に一貫性をもたせる
このことは Comparable (Java Platform SE 6) に次のように記述されています。
The natural ordering for a class C is said to be consistent with equals if and only if e1.compareTo(e2) == 0 has the same boolean value as e1.equals(e2) for every e1 and e2 of class C.
たとえば Collection の実装である TreeSet (Java Platform SE 6) にもこう記述があります。
そのセットによって維持される順序付けが「equals との一貫性」のあるものでなければいけないことに注意してください。
hashCode() と equals() の一貫性†
Hash* を使用する場合には次のことも気をつけなければいけません。
- hashCode() と equals() に一貫性をもたせる
HashSet (Java Platform SE 6) はその名のとおり要素のハッシュ関数を利用するコレクションです。その実装は HashMap (Java Platform SE 6) のキーに要素を追加するもので(値にはダミーのオブジェクトを追加する)、キーの比較に hashCode() と equals() を利用します。