java 两个list过滤
时间: 2023-06-22 08:43:39 浏览: 45
可以使用 Java 8 的 Stream API 来过滤两个 list。假设我们有两个 List,分别是 list1 和 list2,我们希望从 list1 中过滤出那些同时存在于 list2 中的元素,可以按照以下方式实现:
```
List<String> list1 = Arrays.asList("a", "b", "c", "d");
List<String> list2 = Arrays.asList("b", "d", "e", "f");
List<String> result = list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());
```
在这段代码中,我们使用 `stream()` 方法将 list1 转换成一个 Stream 对象,然后使用 `filter()` 方法过滤出那些同时存在于 list2 中的元素,最后使用 `collect()` 方法将过滤后的结果收集到一个新的 List 中。
需要注意的是,这段代码中的 `::` 语法是 Java 8 中的方法引用语法,它等价于使用 lambda 表达式的写法:
```
List<String> result = list1.stream()
.filter(x -> list2.contains(x))
.collect(Collectors.toList());
```
这两种写法的效果是相同的。