9

在 Java 中(也许使用 Guava?),是否提供了一些方法来获取两个Collections 的差异,例如 aList和 aSet 而无需修改其中一个Collection(否则会有collection1.removeAll(collection2)?

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

感谢您的任何提示!

4

2 回答 2

13

Collection您可以使用内置的s过滤第一个Predicate

Collections2.filter(c1, Predicates.not(Predicates.in(c2))

它适用于任何类型的Collections,但显然如果c2是 a更好Set

于 2013-04-10T12:24:50.567 回答
4

ApacheCommons CollectionUtils 有一个名为disjuction的方法

返回包含给定 Iterables 的唯一析取(对称差)的 Collection

于 2013-04-10T12:27:13.190 回答