为什么我们在 HashMap 和 HashSet 中使用 equals() 方法而不实现比较器接口?我在上面的概念中看到了一些示例程序。但是没有比较器接口,他们使用 equals() 和 hashcode() 方法。我的问题是,我们可以在没有比较器接口的情况下使用这些方法吗?我们还可以使用具有可比接口的 equals() 和 hashcode() 以及 compareTo() 方法吗?
HashMap
并且HashSet
关心比较键或元素是否相等——他们不关心ordering,不像(比如TreeMap
和TreeSet
)。这就是他们使用equals()
和的原因hashCode()
。
比较器都是关于排序的 - 完全有可能有一个没有特定order 的类,但确实有相等的概念。例如,一个 2DPoint
类型没有特别自然的排序(如果你想为它定义比较器,你可以做 Y-then-X 或 X-then-Y)但确实有一个自然的相等运算。这意味着可以成为 a 中的键HashMap
或a 中的元素HashSet
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句