像compareTo一样,必须是“自反,反对称和传递”,有什么规则来实现compare方法吗?
谢谢
From 比较器API http://docs.oracle.com/javase/6/docs/api/java/util/Comparator.html#compare%28T,%20T%29:
- 实现者必须确保对于所有 x 和 y sgn(compare(x, y)) == -sgn(compare(y, x))。 (这意味着当且仅当 Compare(y, x) 抛出异常时,compare(x, y) 必须抛出异常
例外。)
- 实现者还必须确保关系是传递的:((compare(x, y)>0) && (compare(y, z)>0)) 意味着compare(x, z)>0。
- 最后,实现者必须确保compare(x, y)==0意味着对于所有z来说sgn(compare(x, z))==sgn(compare(y, z))。
- 一般情况是这样,但并不严格要求 (compare(x, y)==0) == (x.equals(y))。一般来说,任何
违反此条件的比较器应明确指出这一点
事实。推荐的语言是“注意:该比较器强加
与 equals 不一致的顺序。”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)