java.util.Collection类上的经典集合操作有什么内置功能吗?我的具体实现是针对ArrayList的,但这听起来应该适用于Collection的所有子类。我正在寻找类似这样的东西:
ArrayList<Integer> setA ...
ArrayList<Integer> setB ...
ArrayList<Integer> setAintersectionB = setA.intersection(setB);
ArrayList<Integer> setAminusB = setA.subtract(setB);
经过一番搜索,我只能找到自己的解决方案。此外,我意识到我可能混淆了"Set“和"Collection”的概念,分别不允许和允许重复。也许这真的只是Set接口的功能?
在没有人知道任何内置功能的情况下,也许我们可以使用它作为标准实践Java set操作代码的存储库?我想这个轮子已经被重新发明过无数次了。
发布于 2008-10-02 19:33:21
交集使用Collection.retainAll
完成;减法使用Collection.removeAll
完成;并集使用Collection.addAll
完成。在每种情况下,as Set
的行为类似于set,而List
的行为类似于list。
作为可变对象,它们在适当的位置操作。如果想要保持原始可变对象不变,则需要显式复制。
发布于 2008-10-02 19:24:42
我推荐Google Guava。Sets类似乎就是您想要的东西。它有一个intersection方法和一个difference方法。
如果你感兴趣,This presentation可能是你想看的东西。它指的是Google Collections,这是Guava的原名。
发布于 2008-10-02 19:09:16
您是否正在寻找java.util.Set接口(及其实现HashSet和TreeSet (已排序))?
该接口定义了看起来像substract()的removeAll(集合c)和看起来像交集的retainAll(集合c)。
https://stackoverflow.com/questions/163998
复制相似问题