java - 我怎样才能最有效地计算列表/集合差异

标签 java data-structures

我有一个对象类:DemoObject。

DemoObject 就像一些 fooObject 的列表。

fooObjects 有一个名为“ID”的字段。

现在假设我有两个 demoObject :demoObject1 和 demoObject2。现在我想检查两个 demoObjects 中是否存在一些 fooObject,即 demoObject1 和 2 中,然后我可能将其从 demoObject1 中删除。

为了检查两个 demoObject 中的 fooObject,我检查 fooObject“ID”字段是否相同。

我如何才能最有效地完成它。

最佳答案

最简单、最惯用的解决方案要求您在 FooObject 类中提供一个 equals() 方法,该方法根据对象的 ID(或适当的 比较器)。

一旦你有了这个,只需将第一个列表放入Set并使用 Set.removeAll从集合中删除列表 2 中包含的所有元素:

List<FooObject> demoObject1 = ...
List<FooObject> demoObject2 = ...

Set<FooObject> set1 = new HashSet(demoObject1);
set1.removeAll(demoObject2);

关于java - 我怎样才能最有效地计算列表/集合差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7148854/

相关文章:

java - Neo4j:使用 XSD 强制架构

java - jpcap 编译/安装在 Gumstix 上失败

java - 如何在冒泡排序中修复java中的 'java.lang.ArrayOutOfBound exception'

algorithm - 如何区分两棵树以确定 parent 的变化?

java - Trie vs. 后缀树 vs. 后缀数组

java嵌套Map数据结构读写操作

java - PDF 表单填写时出现 iText 错误

java - Apache Camel 中 Quartz cron 作业的测试路线

c - 二叉搜索树 - C 中的层序遍历

data-structures - 我们可以使用 Union-Find 数据结构检测有向图中的循环吗?