假期回来:)带着问题。我正在阅读 ComparableDocumentation 中的 Comparable 接口 文档。我确实理解,我们使用可比较的,因为它将为我们提供排序和自然排序。在文档中,它被写成。
强烈建议(尽管不是必需的)自然排序与 equals 一致。之所以如此,是因为没有显式比较器的排序集(和排序映射)在与自然顺序与等于不一致的元素(或键)一起使用时表现“奇怪”。特别是,这样的排序集合(或排序映射)违反了集合(或映射)的一般合同,该合同是根据 equals 方法定义的。
Comparable如何与equals相关。Comparable 有 compareTo 方法,为什么需要和 equals 方法保持一致?我无法理解这个概念。
还引用消息来源,有人也可以详细说明这一点
例如,如果添加两个键 a 和 b 使得 (!a.equals(b) && a.compareTo(b) == 0) 到不使用显式比较器的排序集,则第二个添加操作返回 false (并且排序集的大小不会增加)因为从排序集的角度来看 a 和 b 是等价的。
谢谢。