从 2 数组列表中删除常见条目



我想从 2 个ArrayList中删除常见条目:

A = [1,2,3,5]
B = [1,2,3,7]

操作 :

A = [5]
B = [7]

上面有java8函数吗?如何有效地处理它?

也许这足够有效:

public void removeCommonElements(List<Integer> list1, List<Integer> list2) {
List<Integer> list3 = list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());
list1.removeAll(list3);
list2.removeAll(list3);
}
List<Integer> list3 = list1.stream()
.filter(var -> {return !list2.contains(var);})
.collect(Collectors.toList());
List<Integer> list4 = list2.stream()
.filter(var -> {return !list1.contains(var);})
.collect(Collectors.toList());

按照建议,你可以这样做。

List<Integer> list1 = new ArrayList<>(List.of(1,2,3,5));
List<Integer> list2 = new ArrayList<>(List.of(1,2,3,7));
List<Integer> commonElements = new ArrayList<>(list1);
commonElements.retainAll(list2);
list1.removeAll(commonElements);
list2.removeAll(commonElements);
System.out.println(list1);
System.out.println(list2);

指纹

[5]
[7]

最新更新