Java stream流筛选两个list的补集
时间: 2023-07-08 16:05:01 浏览: 81
可以使用Java 8的Stream API来筛选两个List的补集。假设有两个List,分别为list1和list2,代码如下:
```java
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(3, 4, 5, 6, 7);
List<Integer> difference = list1.stream()
.filter(e -> !list2.contains(e))
.collect(Collectors.toList());
System.out.println(difference);
```
运行结果为:
```
[1, 2]
```
上述代码中,我们通过Stream API的filter方法和contains方法来筛选出list1中不在list2中的元素,最后将结果收集到一个List中。
相关问题
stream流筛选两个list的交集
可以使用Java 8中的Stream API来筛选两个List的交集,具体代码如下:
```java
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(3, 4, 5, 6, 7);
List<Integer> intersection = list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());
System.out.println(intersection); // 输出 [3, 4, 5]
```
首先将List转换为Stream,然后使用filter方法筛选出list2中包含的元素,最后通过collect方法将结果收集到一个新的List中。
stream流筛选两个list的重复项
可以使用Java 8的Stream API,先将两个列表合并,然后使用distinct()和filter()方法进行筛选。具体的代码如下:
```java
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(3, 4, 5, 6, 7);
List<Integer> result = Stream.concat(list1.stream(), list2.stream())
.distinct()
.filter(i -> list1.contains(i) && list2.contains(i))
.collect(Collectors.toList());
System.out.println(result); // 输出 [3, 4, 5]
```
上面的代码将两个列表合并成一个,然后使用distinct()方法去重,最后使用filter()方法筛选出同时在两个列表中出现的元素。最后将筛选出的元素收集到一个新的列表中,并输出结果。
阅读全文