是否有对java.util.Collection的类经典组操作任何内置的功能? 我的具体实施将是ArrayList中,但是这听起来似乎应该申请收集的所有子类。 我在寻找类似:
ArrayList<Integer> setA ...
ArrayList<Integer> setB ...
ArrayList<Integer> setAintersectionB = setA.intersection(setB);
ArrayList<Integer> setAminusB = setA.subtract(setB);
经过一番搜索,我才能够找到本土的解决方案。 此外,我意识到我可能混淆了“集”的概念与“收藏”的概念,不允许分别允许重复。 也许,这实际上只是设置界面功能?
在没有人的任何内置功能都知道的情况下,也许我们可以以此为标准做法的Java设置操作代码库? 我想这轮已经被彻底改造了无数次。
路口与做Collection.retainAll
; 减法Collection.removeAll
; 工会与Collection.addAll
。 在每一种情况下, Set
会像一组和List
将被用作一个列表。
作为可变对象,他们在的地方进行操作。 如果你想保留未突变原可变对象你需要明确复制。
我建议谷歌番石榴 。 该集合类似乎有你在寻找什么。 它有一个交叉点方法和差分方法。
此演示文稿可能是你想如果你有兴趣看的东西。 它指的是谷歌集合,这是番石榴的原名。
您是否正在寻找为java.util.Set接口(及其实现的HashSet和TreeSet的(排序))?
该接口定义的removeAll(Collection c)将它看起来像。减去(),和中的retainAll(Collection c)将看起来像相交。
对于可变操作见接受的答案。
对于imutable变种,你可以用java 8要这样做
减法
set1
.stream()
.filter(item-> !set2.contains(item))
.collect(Collectors.toSet())
路口
set1
.stream()
.filter(item-> set2.contains(item))
.collect(Collectors.toSet())