java.util.Collection的经典集合操作

在java.util.Collection类中是否有经典集合操作的内置function? 我的具体实现是ArrayList,但是这听起来像应该适用于Collection的所有子类。 我正在寻找像这样的东西:

ArrayList<Integer> setA ... ArrayList<Integer> setB ... ArrayList<Integer> setAintersectionB = setA.intersection(setB); ArrayList<Integer> setAminusB = setA.subtract(setB); 

经过一番search,我只能find本土解决scheme。 此外,我意识到我可能会混淆“集合”的想法与“集合”的想法,不允许和允许分别重复。 也许这只是Set接口的function?

如果没有人知道任何内置的function,也许我们可以使用它作为标准实践Java集操作代码的存储库? 我想这个轮子已经被重新改造了很多次。

交集使用Collection.retainAll完成; 用Collection.removeAll减去; 与Collection.addAll 。 在每种情况下, Set将像一个集合一样,一个List将像列表一样。

作为可变对象,它们在适当的位置运行。 如果你想保留未改变的原始可变对象,你需要显式复制。

我会推荐Google Guava 。 Sets类似乎正是你正在寻找的东西。 它有一个交集方法和一个差异方法。

如果你有兴趣, 这个演示文稿可能是你想看的东西。 它指的是谷歌collections,这是番石榴的原名。

你正在寻找java.util.Set接口(及其实现HashSet和TreeSet(sorting))?
该接口定义removeAll(Collection c),看起来像substract()和retainAll(Collection c),看起来像交集。

对于可变操作,请参阅接受的答案。

对于一个不可变的变体,你可以用java 8来做到这一点

减法

 set1 .stream() .filter(item-> !set2.contains(item)) .collect(Collectors.toSet()) 

路口

 set1 .stream() .filter(item-> set2.contains(item)) .collect(Collectors.toSet())