java - 努力理解 "List<String> list = people.stream().map(Person::getName).collect(Collectors.toList());"

标签 java list dictionary java-stream

我正在阅读有关 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/

相关文章:

python - pandas:将列表转换为 int64index

java - 从 List<Integer> 中检索所有值对

用于 HashMap 的 Java 8 流

python检查字典是否在列表中

c++ - C++ 中的非法间接寻址

java - 是否可以从 MD5 和 Java 恢复消息?

具有内存数据库的 Java 应用程序构建时间太长

java - 当一个列表不稳定时如何比较两个列表的顺序

java - 将 Monos 链接在一起,其中函数返回结果代码而不是完整对象

Python 列表理解技巧