List<String> list1 = List.of("Apple","pear","ORANGE","Banana"); Stream<String> stream1 = list1.stream(); List<String> list2 = List.of("Apple","pear","peach"); System.out.println(stream1.filter(list2::contains).collect(Collectors.toList()));
时间: 2024-04-22 13:24:28 浏览: 64
Java 新版POI 读取excel文件信息返回List<List<String>>对象,包含文件内公式处理
你的代码使用了Java 8引入的Stream API和方法引用的语法,它的作用是将两个列表中共同包含的元素筛选出来并存储到一个新的列表中。
让我解释一下代码的执行过程:
1. 首先,你定义了一个`list1`,它包含了一些水果的名称。
2. 然后,通过`list1`创建了一个`Stream`对象`stream1`,用于操作和处理这个列表中的元素。
3. 接下来,你定义了另一个`list2`,它包含了一些水果的名称。
4. 通过`stream1.filter(list2::contains)`这一操作,你筛选出了`stream1`中那些在`list2`中也存在的元素。
- 这里使用了方法引用`list2::contains`,它相当于传递了一个lambda表达式`(element) -> list2.contains(element)`,用于判断一个元素是否在`list2`中存在。
5. 最后,通过`.collect(Collectors.toList())`将筛选出来的元素收集到一个新的列表中。
6. 最终结果会被打印输出。
假设执行结果如下:
```
[Apple, pear]
```
这表示在`list1`中,"Apple"和"pear"这两个元素同时也在`list2`中存在,它们被筛选出来并存储在新的列表中。
注意:在Java 9及之后的版本中,`List.of()`方法可以直接创建一个不可变的列表。但如果你使用的是Java 8,需要使用`Arrays.asList()`方法来创建一个可变的列表。
阅读全文