我不确定以下代码是否能确保 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 ?
嘿,看看我发现了什么!
http://gafter.blogspot.com/2007/03/compact-object-comparator.html http://gafter.blogspot.com/2007/03/compact-object-comparator.html
哦,是的,我忘记了 IdentityHashMap(仅限 Java 6 及更高版本)。只需要注意释放比较器即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)