获取两组之间的差异
因此,如果我有两组:
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?
因此,如果我有两组:
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?
试试这个
test2.removeAll(test1);
从此集中删除指定集合中包含的所有元素(可选操作)。如果指定的集合也是一个集合,则此操作将有效地修改此集合,使其值是两个集合的非对称集合差。
如果您使用番石榴(前Google Collections)库,则有一个解决方案:
SetView<Number> difference = com.google.common.collect.Sets.difference(test2, test1);
返回的是 一个 ,它是一个实时表示,您可以将其设置为不可变或复制到另一个集合。 并保持完好无损。SetView
Set
test1
test2