stream流筛选两个list的交集
时间: 2023-07-08 13:05:00 浏览: 108
可以使用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中。
相关问题
java 筛选2个list不交集数据
在Java中,可以使用集合框架提供的`Set`接口来筛选两个List中的不交集数据。Set不包含重复元素,所以我们可以将每个List转换为Set,然后通过并集操作找到它们的所有共同元素,最后再取原List减去这个并集,就可以得到不交集的数据。
以下是使用Java 8 Stream API的一个示例:
```java
import java.util.*;
List<String> list1 = Arrays.asList("A", "B", "C", "D");
List<String> list2 = Arrays.asList("C", "D", "E", "F");
// 转换为Set
Set<String> set1 = new HashSet<>(list1);
Set<String> set2 = new HashSet<>(list2);
// 找到并集
set1.retainAll(set2); // 保留set2中存在的元素
// 获取不交集
List<String> result = list1.stream()
.filter(element -> !set1.contains(element)) // 过滤出不在set1中的元素
.collect(Collectors.toList());
System.out.println(result); // 输出:[A, B]
java求两个list集合的交集
可以使用Java 8中的Stream API和lambda表达式来实现两个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()
.distinct()
.filter(list2::contains)
.collect(Collectors.toList());
System.out.println(intersection);
```
输出结果:
```
[3, 4, 5]
```
解释:
首先将list1的元素转换成一个Stream对象,使用distinct方法去重。然后使用filter方法筛选出list2中也包含的元素。最后使用collect方法将结果转换为List集合返回。
阅读全文