用于减去列表的java 8中的减号操作

Man*_*Joy 7 java arraylist java-8 java-stream

假设我有两个列表:

List<Integer> list1 =  Arrays.asList(1, 2, 3);
List<Integer> list2 =  Arrays.asList(1, 2, 4, 5);
Run Code Online (Sandbox Code Playgroud)

现在我想表演(list1 - list2).预期的ouptut是{3}.如何使用java 8流做到这一点?

Era*_*ran 15

如果必须使用Streams:

List<Integer> diff = list1.stream()
                          .filter(i -> !list2.contains(i))
                          .collect (Collectors.toList());
Run Code Online (Sandbox Code Playgroud)


Hir*_*ren 9

试试这个

List<Integer> difference = new ArrayList<>(list1);
difference.removeAll(list2);
System.out.println("Remove: " + difference); //3
Run Code Online (Sandbox Code Playgroud)

  • 实施是正确的,但这不是交集.这是减法.交叉点应该导致两个集合之间的共同元素. (2认同)