如果compareTo()返回0,为什么暗示对象相等?

如果compareTo()返回0,为什么暗示对象相等?,第1张

如果compareTo()返回0,为什么暗示对象相等?

java.util.SortedSet
javadoc中提取:

请注意,如果排序集要正确实现Set接口,则排序集(无论是否提供显式比较器)所维护的顺序必须与equals一致。(有关与equals一致的精确定义,请参见Comparable接口或Comparator接口。)之所以这样,是因为Set接口是根据equals *** 作定义的,但是排序后的set使用其compareTo(或compare)方法执行所有元素比较。
,因此从排序集的角度来看,此方法认为相等的两个元素相等。即使排序顺序与equals不一致,也可以很好地定义排序集的行为。它只是不遵守Set接口的一般约定。

因此,换言之,

SortedSet
破坏(或“扩展”)了
Object.equals()
和的一般合同
Comparable.compareTo
。参见合同
compareTo

强烈建议(但并非严格要求(x.compareTo(y)==
0)==(x.equals(y))。一般而言,任何实现Comparable接口且违反此条件的类都应明确指出这一事实。推荐的语言是“注意:此类具有与等式不一致的自然顺序”。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5561223.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存