编辑:现在仅考虑ArrayDeque。 (我本来以为LinkedList也不会覆盖这两种方法。)

集合类型ArrayDeque仅使用从Object继承的hashCodeequals方法实现。

它为什么不通过适当的实现来替代这些方法(即,基于包含的元素的哈希和相等性测试)?

最佳答案

LinkedList 扩展了 AbstractSequentialList ,扩展了 AbstractList ,后者确实覆盖了equalshashCode-因此,实现不继承自Object

另一方面,就我所知, ArrayDeque 确实不继承任何其他实现。它的直接父类(super class)( AbstractCollection )不会覆盖它们。这感觉像是一个异常(exception),而不是规则-我相信Java中的大多数collection实现都会“做正确的事”。

我不知道ArrayDeque选择不实现相等性的理由,但是如果您想比较两个双端队列,则可以轻松地将它们转换为列表或数组,并以此方式进行操作。

关于java - 为什么ArrayDeque不覆盖equals()和hashCode()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18203855/

10-10 18:02