我正在阅读有关 List 接口(interface)的 Oracle Java 教程,遇到了以下语法:
List<String> list = people.stream().map(Person::getName).collect(Collectors.toList());
教程中只提到这是一个将一些名字聚合成一个List的例子,并没有做进一步的解释。我一直在努力理解这个声明实际上是如何运作的。有人可以向我解释一下吗?
最佳答案
- 第一种方法,
people.stream()
创建一个Stream<Person>
. - 转换由
map()
指定.每个Person
在流中将被转换为String
通过调用getName()
在上面。Person::getName
syntax 是一个“方法引用”,类型为Function<Person,String>
在这种情况下。结果是Stream<String>
. - A
Collector<String,?,List<String>>
使用工厂方法创建Collectors.toList()
. -
collect()
方法是终端操作;调用它会导致Stream
待评估。收集结果,产生新的List<String>
.
关于java - 努力理解 "List<String> list = people.stream().map(Person::getName).collect(Collectors.toList());",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35929847/