当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《java.util.Collection的经典集合操作》经验,为你挑选了4个好方法。

java.util.Collection类上的经典集合操作是否有任何内置功能?我的具体实现将是ArrayList,但这听起来应该适用于Collection的所有子类.我正在寻找类似的东西:

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

经过一番搜索,我才能找到本土解决方案.此外,我意识到我可能会混淆"集合"的想法与"集合"的想法混淆,不允许和分别允许重复.也许这只是Set界面的功能?

如果没有人知道任何内置功能,也许我们可以将其用作标准实践Java集操作代码的存储库?我想这个轮子已经多次重新发明.



1> Tom Hawtin -..:

交叉完成Collection.retainAll; 减法Collection.removeAll; 与...联合Collection.addAll.在每种情况下,Set就像一个集合,一个List将像列表一样行事.

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



2> Benno Richte..:

我会推荐谷歌番石榴.该集合类似乎有你在寻找什么.它有交叉方法和差分方法.

如果您有兴趣,可能需要观看此演示文稿.它指的是Google Collections,这是Guava的原始名称.



3> PhiLho..:

您在寻找java.util.Set接口(及其实现HashSet和TreeSet(已排序))?
接口定义了removeAll(Collection c),它看起来像substract(),而retainAll(Collection c)看起来像是交集.


好答案.但是,这些将修改两组中的一组.如果Ross想要第三组包含解决方案,他首先需要克隆一个并将其用作隐式变量.

4> mhstnsc..:

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

对于一个可重定义的变体,您可以使用java 8执行此操作

减法

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

路口

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

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有