我正在阅读各种 java 示例并遇到以下代码:
public List<String> list() {
return model.stream()
.map(User::getName)
.collect(Collectors.toList());
}
有人可以解释这里发生了什么,据我所知,正在返回用户类名称列表或其他内容吗?我在哪里可以阅读所有这些内容?
我正在阅读各种 java 示例并遇到以下代码:
public List<String> list() {
return model.stream()
.map(User::getName)
.collect(Collectors.toList());
}
有人可以解释这里发生了什么,据我所知,正在返回用户类名称列表或其他内容吗?我在哪里可以阅读所有这些内容?
这是
Stream API. 它旨在处理数据结构,主要是集合和数组。简要摘录:
我不知道 y
model是什么类型,但我猜List.User在此示例中,从存储在工作表中的实例创建了一个流-model.stream()。然后创建的流被“映射” - 它使用其他值更改为另一个流
map。该方法
map采用 lambda 表达式(对应于 interfaceFunction)并返回将表达式应用于流的每个元素后获得的值。对于流的每个元素(即,对于 的实例User)被应用User.getName(),而不是具有 的流,而是User获得变量流nameUser。之后,使用
collect(Collectors.toList()).实际上,在您的示例中,一个非常简单的流,还有更复杂的流。要了解流的工作原理,我建议您阅读有关函数式 Java 的书籍,或者在极端情况下阅读有关流的系列文章,例如this one或this one。Stream API也有一个很好的小参考,但如果您不熟悉流,将很难理解。
结果,集合
[User1, User2, User3]将是一个集合["Вася", "Петя", "Вова"]。