两个系列之间的区别? (集合1中的元素,但不在集合2中)

时间:2013-04-10 12:17:46

标签: java list collections set guava

在Java中(可能使用Guava?),是否提供了一些方法来获得两个Collection的区别,例如一个List和一个Set 没有修改其中一个Collection(否则会有collection1.removeAll(collection2)

在Guava中有Sets.difference(set1,set2),但它仅适用于Set s,不适用于任意集合。

感谢任何提示!

2 个答案:

答案 0 :(得分:13)

您可以使用内置Collection s:

过滤第一个Predicate
Collections2.filter(c1, Predicates.not(Predicates.in(c2))

它适用于任何类型的Collection,但显然如果c2Set,情况会更好。

答案 1 :(得分:4)

ApacheCommons CollectionUtils有一个名为disjuction 的方法

  

返回一个Collection,其中包含给定Iterables的唯一析取(对称差异)