次のコードが Comparator の Javadoc で指定されたすべての条件を保証するかどうかはわかりません。
class TotalOrder<T> implements Comparator<T> {
public boolean compare(T o1, T o2) {
if (o1 == o2 || equal(o1, o2)) return 0;
int h1 = System.identityHashCode(o1);
int h2 = System.identityHashCode(o2);
if (h1 != h2) {
return h1 < h2 ? -1 : 1;
}
// equals returned false but identity hash code was same, assume o1 == o2
return 0;
}
boolean equal(Object o1, Object o2) {
return o1 == null ? o2 == null : o1.equals(o2);
}
}
上記のコードは、そのクラスが Comparable を実装していない場合でも、クラスのすべてのインスタンスに完全な順序付けを課しますか?