问题描述
如何比较两个Treeset并在Java中打印相同/不同的元素。
Set<Integer> aTreeSet = new TreeSet<>();
aTreeSet.add(3);
aTreeSet.add(1);
aTreeSet.add(2);
Set<Integer> bTreeSet = new TreeSet<>();
bTreeSet.add(3);
bTreeSet.add(5);
bTreeSet.add(4);
我希望输出为 A中缺少元素:[1,2] B中缺少元素:[5,4]
我尝试了以下无法正常工作的方法。
aTreeSet.removeAll(bTreeSet);
System.out.println(aTreeSet);//[1,2]
System.out.println(bTreeSet);//[3,4,5]
请帮助我。
解决方法
您好,您可以这样做:
Set<Integer> aTreeSet = new TreeSet<>();
aTreeSet.add(3);
aTreeSet.add(1);
aTreeSet.add(2);
Set<Integer> bTreeSet = new TreeSet<>();
bTreeSet.add(3);
bTreeSet.add(5);
bTreeSet.add(4);
final Set<Integer> aTreeSetWithoutBTreeSet = aTreeSet.stream()
.filter(tree -> !bTreeSet.contains(tree))
.collect(Collectors.toSet());
final Set<Integer> bTreeSetWithoutATreeSet = bTreeSet.stream()
.filter(tree -> !aTreeSet.contains(tree))
.collect(Collectors.toSet());
System.out.println(aTreeSetWithoutBTreeSet);//[1,2]
System.out.println(bTreeSetWithoutATreeSet);//[3,4,5]
希望可以为您提供帮助。