获取两组之间的差异

2022-08-31 05:52:26

因此,如果我有两组:

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?


答案 1

试试这个

test2.removeAll(test1);

设置#删除全部

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


答案 2

如果您使用番石榴(前Google Collections)库,则有一个解决方案:

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

返回的是 一个 ,它是一个实时表示,您可以将其设置为不可变或复制到另一个集合。 并保持完好无损。SetViewSettest1test2


推荐