获取两组之间的差异

新手上路,请多包涵

所以如果我有两套:

 Set<Integer> test1 = new HashSet<Integer>();
test1.add(1);
test1.add(2);
test1.add(3);

Set<Integer> test2 = new HashSet<Integer>();
test2.add(1);
test2.add(2);
test2.add(3);
test2.add(4);
test2.add(5);

有没有办法比较它们并且只返回一组 4 和 5?

原文由 David Tunnell 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 734
2 个回答

尝试这个

test2.removeAll(test1);

设置#removeAll

从此集合中删除指定集合中包含的所有元素(可选操作)。如果指定的集合也是一个集合,这个操作有效地修改了这个集合,使得它的值是两个集合的不对称集合差。

原文由 Prabhaker A 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您使用 Guava(以前的 Google Collections)库,则有一个解决方案:

 SetView<Number> difference = com.google.common.collect.Sets.difference(test2, test1);

返回的 SetView 是一个 Set ,它是一个实时表示,您可以使其不可变或复制到另一组。 test1test2 保持原样。

原文由 Mikhail Golubtsov 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题