gpt4 book ai didi

java - 我如何根据每个队列的内容值来判断两个 Java 队列是否相等?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:34:51 24 4
gpt4 key购买 nike

我想实现一个 equals 的覆盖,它根据两个 Java Queue 对象的内容(按值)相等来比较它们。

我可能可以破解一些代码,但肯定有人已经优雅地解决了这个问题。谷歌搜索没有找到任何结果,所以我接下来来到这里。

我很感激任何建议。我也需要对 ArrayList 和 HashMap 集合做同样的事情。

顺便说一句,对于 equals(),我使用这个作为我的指南:http://www.javapractices.com/topic/TopicAction.do?Id=17

它提供了一些提示,但显然我在集合方面需要更多帮助。根据该链接的建议,集合中包含的类型将覆盖 equals()。

最佳答案

java.util.Queue 的 JavaDoc 已经说明了问题:

Queue implementations generally do not define element-based versions of methods equals and hashCode but instead inherit the identity based versions from class Object, because element-based equality is not always well-defined for queues with the same elements but different ordering properties.

因此,如果您想基于包含的对象来实现,您需要为您的用例自行实现逻辑(或重用一些库)。

例如对于 ArrayList,您只需调用 ArrayList.equals()

对于队列,我会采用实用的方法将它们转换为数组,例如使用java.util.concurrent.LinkedBlockingQueue.toArray() 然后使用 Arrays.equals(queue1AsArray,queue2AsArray);

关于java - 我如何根据每个队列的内容值来判断两个 Java 队列是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4199829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com