如何在Java中比较两组并打印缺少的元素

问题描述

如何比较两个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]

希望可以为您提供帮助。