加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何根据每个队列的内容值看两个Java队列是否相等?

发布时间:2020-12-15 08:36:29 所属栏目:Java 来源:网络整理
导读:我想实现一个equals的覆盖,它根据它们比较两个 Java Queue对象,每个对象的内容都相等(按值). 我可能会破解一些代码,但肯定有人已经优雅地解决了这个问题.谷歌搜索没有出现任何结果,所以我接下来来到这里. 我很感激任何建议.我也需要对ArrayList和HashMap集合
我想实现一个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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读