在Java中比较两个集合的最快方法是什么?

我试图优化一段比较列表元素的代码

例如

公共作废比较(设置<记录>第一组,设置<记录>第二组){
用于(记录firstRecord:firstSet){
用于(记录第二个记录:第二组){
//比较逻辑
}
}
}

请考虑到成套记录的数量将很高

谢谢

谢哈尔

firstSet.equals(secondSet)

这真的取决于你想在比较逻辑中做什么。。。如果在一个集合中发现一个元素而不是在另一个集合中,会发生什么?您的方法有一个void返回类型,因此我假设您将在该方法中执行必要的工作

更细粒度的控制(如果需要):

如果(!firstSet.containsAll(secondSet)){
//必要时做点什么
}
如果(!secondSet.containsAll(firstSet)){
//必要时做点什么
}

如果需要获取一个集合中的元素而不是另一个集合中的元素。

编辑:set.removeAll(otherSet)返回布尔值,而不是集合。要使用removeAll(),必须先复制集合,然后再使用它

Set one=新哈希集&lt&燃气轮机;(第一套);
Set two=新哈希集&lt&燃气轮机;(第二套);
一、拆除所有(第二套);
二、拆除所有(第一套);

如果onetwo的内容都是空的,那么您就知道这两个集合是相等的。如果不是,那么你就得到了使集合不相等的元素

您提到记录的数量可能很高。如果底层实现是一个HashSet,那么每个记录的获取都是在O(1)时间内完成的,因此您不会得到比这更好的结果树集是O(日志n)

发表评论