我有一个对象类: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/