在Java中(可能使用Guava?),是否提供了一些方法来获得两个Collection
的区别,例如一个List
和一个Set
没有修改其中一个Collection
(否则会有collection1.removeAll(collection2)
?
在Guava中有Sets.difference(set1,set2)
,但它仅适用于Set
s,不适用于任意集合。
感谢任何提示!
答案 0 :(得分:13)
您可以使用内置Collection
s:
Predicate
Collections2.filter(c1, Predicates.not(Predicates.in(c2))
它适用于任何类型的Collection
,但显然如果c2
是Set
,情况会更好。
答案 1 :(得分:4)
ApacheCommons CollectionUtils有一个名为disjuction 的方法
返回一个Collection,其中包含给定Iterables的唯一析取(对称差异)