java中获取两个List<String>中相同的元素的stream中的方法
时间: 2024-09-24 22:03:38 浏览: 39
在Java中,如果你想要获取两个`List<String>`中相同的元素,可以使用Stream API提供的几种方法。这里我们可以使用`Collectors.groupingBy`和`Intersecting`类来实现这个操作:
```java
import java.util.*;
import java.util.stream.Collectors;
// 假设我们有两个List
List<String> list1 = Arrays.asList("a", "b", "c", "d", "e");
List<String> list2 = Arrays.asList("c", "d", "f", "g", "h");
// 使用Stream API找出两个列表中相同的元素
Map<String, List<String>> map1 = list1.stream()
.collect(Collectors.groupingBy(Function.identity()));
Map<String, List<String>> map2 = list2.stream()
.collect(Collectors.groupingBy(Function.identity()));
// 然后找出两个map中键值对的交集,即共同的元素
Set<String> commonElements = map1.keySet().stream()
.filter(map2::containsKey)
.collect(Collectors.toSet());
System.out.println(commonElements); // 输出:[c, d]
```
在这个例子中,`groupingBy`方法将每个元素映射到一个单独的列表,然后通过`filter`和`containsKey`检查两个列表的键(元素)是否存在于对方的map中。
阅读全文