【发布时间】:2013-08-18 18:18:18
【问题描述】:
假期后回来 :) 带着问题。我正在阅读 Comparable interface documentation from ComparableDocumentation。我确实理解,我们使用可比较的,因为它将为我们提供排序和自然排序。在文档中是这样写的。
强烈建议(尽管不是必需的)自然 排序与equals一致。之所以如此,是因为排序集 (和排序的地图)没有显式比较器的行为“奇怪”时 它们与自然顺序为的元素(或键)一起使用 与等号不一致。特别是,这样的排序集(或排序 map) 违反了 set(或 map)的一般约定,该约定被定义为 就equals方法而言。
Comparable 与 equals 有什么关系。 Comparable 有 compareTo 方法,为什么需要和 equals 方法保持一致?我无法理解这个概念。
也引用了来源,有人也可以详细说明这一点
例如,如果添加两个键 a 和 b 使得 (!a.equals(b) && a.compareTo(b) == 0) 到不使用显式的排序集 比较器,第二个加法操作返回假(和大小 排序集不会增加),因为 a 和 b 等价于 排序集的视角。
谢谢。
【问题讨论】:
标签: java generics collections