stream 筛选出2个list 里面有重复的元素 返回list
时间: 2025-01-06 15:50:41 浏览: 3
Stream API 是 Java 8 引入的一个强大的功能,用于处理集合数据。如果你想从两个列表中找出有重复元素并返回一个新的列表,可以按照以下步骤操作:
1. 首先,将两个列表转换成 Stream。例如:
```java
List<String> list1 = ...; // 第一个列表
List<String> list2 = ...; // 第二个列表
Stream<Stream<String>> streams = Stream.concat(list1.stream(), list2.stream());
```
2. 接着,使用 `flatMap` 方法将每个 Stream 中的元素扁平化,并使用 `distinct` 方法去除重复项。这会得到一个只包含不重复元素的新 Stream:
```java
Stream<String> distinctElements = streams.flatMap(Stream::stream).distinct();
```
3. 最后,你可以使用 `filter` 方法检查哪些元素存在于原始列表中两次。这里需要创建一个集合,比如 HashSet,因为我们需要快速判断元素是否存在:
```java
Set<String> duplicates = new HashSet<>();
List<String> duplicatesList = distinctElements.filter(duplicates::contains)
.limit(2) // 如果你想返回最多2个重复的元素
.collect(Collectors.toList());
```
这个 `duplicatesList` 就包含了最多2个在 `list1` 和 `list2` 中都存在的重复元素。
阅读全文