我有一个Object类:DemoObject。
DemoObject就像一些fooObjects的列表。
fooObjects有一个名为“ID”的字段。
现在假设我有两个demoObject:demoObject1和demoObject2。现在我想检查两个demoObject中是否存在一些fooObject,即在demoObject1和2中,然后我可能会从demoObject1中删除它。
为了检查来自两个demoObject的fooObject,我检查fooObject“ID”字段是否相同。
我如何才能最有效地完成它。
答案 0 :(得分:2)
最简单,最惯用的解决方案要求您在类equals()
中提供FooObject
方法,该方法会根据对象的ID(或适当的Comparator
)来比较对象。
完成此操作后,只需将第一个列表放入Set
并使用Set.removeAll
从集合中删除列表2中包含的所有元素:
List<FooObject> demoObject1 = ...
List<FooObject> demoObject2 = ...
Set<FooObject> set1 = new HashSet(demoObject1);
set1.removeAll(demoObject2);
答案 1 :(得分:0)
使用Set.retainAll()
方法。我认为它可以满足您的需求。