首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java如何快速比较两个在Java中完全相同的集合?

Java如何快速比较两个在Java中完全相同的集合?
EN

Stack Overflow用户
提问于 2012-09-29 09:34:16
回答 4查看 15.1K关注 0票数 1

java如何快速比较两个在Java中完全相同的集合?

例如:

如果设置了此集合,则比较它们包含相同对象且大小相同。

代码如下所示

代码语言:javascript
复制
public boolean isSameSets(Set<T> set1, Set<T> set2){

    if (set1.size() != set2.size()) {
        return false;
    }

    return set1.containAll(set2) && set2.containAll(set1);
}

但是如果集合是list,因为list是有序集合,我们可以迭代比较每个元素,我认为这种方式不是最好的,谁能告诉我如何快速比较它们?

========================================================

谢谢大家,实际上,Collection equals方法可以做到这一点,包括Set和List。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-29 09:37:37

集合equals(Object)方法应该会为您完成此操作。javadoc准确地解释了"equals“对于集合的含义,并且为扩展集合的接口进一步改进了语义。

不同的集合类将有自己的此方法实现,并针对其各自的语义模型和表示进行了调整。因此,例如,List上的equals方法将考虑元素顺序,但Set上的equals方法通常不会。

有人问:

我们不能使用containsAll(集合)。

一般来说,不是。例如,具有相同元素的两个列表不一定相等。您还必须考虑列表顺序。(此外,使用containsAll比较列表是O(N^2),其中List的有效equals实现应该是O(N) ...在最坏的情况下。)

这同样适用于使用retainsAll

票数 4
EN

Stack Overflow用户

发布于 2012-09-29 09:38:42

HashSet.equals方法已经进行了比较,以确保每个集合中都有完全相同的元素。ArrayList.equals做同样的事情,除了它还检查顺序。

票数 4
EN

Stack Overflow用户

发布于 2012-09-29 09:36:51

您可以使用Collection.retainAll()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12649178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档