编辑:现在仅考虑ArrayDeque。 (我本来以为LinkedList
也不会覆盖这两种方法。)
集合类型ArrayDeque
仅使用从Object继承的hashCode
和equals
方法实现。
它为什么不通过适当的实现来替代这些方法(即,基于包含的元素的哈希和相等性测试)?
最佳答案
LinkedList
扩展了 AbstractSequentialList
,扩展了 AbstractList
,后者确实覆盖了equals
和hashCode
-因此,实现不继承自Object
。
另一方面,就我所知, ArrayDeque
确实不继承任何其他实现。它的直接父类(super class)( AbstractCollection
)不会覆盖它们。这感觉像是一个异常(exception),而不是规则-我相信Java中的大多数collection实现都会“做正确的事”。
我不知道ArrayDeque
选择不实现相等性的理由,但是如果您想比较两个双端队列,则可以轻松地将它们转换为列表或数组,并以此方式进行操作。
关于java - 为什么ArrayDeque不覆盖equals()和hashCode()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18203855/