java stream流 两个相同字段的list取差集
时间: 2023-09-17 09:13:45 浏览: 105
在Java中,你可以使用Stream流来获取两个具有相同字段的列表的差集。首先,将两个列表转换为流,然后使用filter操作符和anyMatch方法来过滤出在第一个列表中存在但在第二个列表中不存在的元素。下面是一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
class Main {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
list1.add(5);
List<Integer> list2 = new ArrayList<>();
list2.add(4);
list2.add(5);
list2.add(6);
list2.add(7);
list2.add(8);
List<Integer> difference = list1.stream()
.filter(element -> !list2.contains(element))
.toList();
System.out.println(difference);
}
}
```
这段代码将输出 `[1, 2, 3]`,即两个列表的差集。请注意,这里使用了Java 8引入的toList()方法来将流转换为列表。如果你使用的是较早版本的Java,你可以使用collect(Collectors.toList())来实现相同的功能。同样地,如果你的列表中包含复杂的对象而不仅仅是整数,你可能需要使用适当的字段来进行过滤操作。
阅读全文