java中获取两个List<String>中相同的元素,使用stream流
时间: 2024-09-24 22:03:39 浏览: 44
在Java中,你可以使用Stream API来获取两个List<String>中相同的元素。首先,你需要对这两个列表进行笛卡尔积操作(Cartesian product),然后过滤出那些在两个列表中都存在的元素。以下是一个简单的示例:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public List<String> findCommonElements(List<String> list1, List<String> list2) {
// 获取两个列表笛卡尔积
List<String[]> cartesianProduct = list1.stream()
.map(String::toArray)
.collect(Collectors.toList());
cartesianProduct.addAll(list2.stream()
.map(String::toArray)
.collect(Collectors.toList()));
// 使用Stream.filter()过滤出同时存在于两个列表的元素
return cartesianProduct.stream()
.filter(array -> array[0].equals(array[1])) // 假设两个数组的第一个元素代表list1中的元素
.map(String[].::get) // 提取公共元素
.distinct() // 去除重复
.collect(Collectors.toList());
}
// 示例用法
List<String> list1 = new ArrayList<>();
list1.add("a");
list1.add("b");
List<String> list2 = new ArrayList<>();
list2.add("b");
list2.add("c");
List<String> commonElements = findCommonElements(list1, list2);
System.out.println(commonElements); // 输出: [b]
阅读全文