lambda - Lambda 表达式 java 8 映射方法
问题描述
java 8中map方法的语法是:
<R> Stream<R> map(Function<? super T,? extends R> mapper)
但我可以使用 lambda 表达式:
personList.stream().filter(p -> p.getPersonType().equals("student"))
.map(p -> new Student(p.getId(), p.getName()))
.collect(Collectors.toList());
map 方法中的参数如何等同于 Function 数据类型。请帮助我理解这一点。
谢谢
解决方案
Function<? super T,? extends R> mapper
该方法的函数map
基本上表示任何采用一个参数并返回一个值的函数,因此在这种特定情况下,lambdap -> new Student(p.getId(), p.getName())
是一个采用Person
p 并返回 a的函数,Student
因此非常适合。
换个角度看,lambda 等效于:
.map(new Function<Person, Student>() {
@Override
public Student apply(Person p) {
return new Student(p.getId(), p.getName());
}
})
推荐阅读
- python - 如何纠正这个?记事本中的 Windows 自动化使用 swapy。Python
- linux - 可以在 curl 配置文件中包含 GET 和 POST
- excel-formula - Excel 计算错误
- python - 在离线嵌入式linux中安装python包
- linux - 从 ssh 脚本读取时 /proc/meminfo 未更新
- excel - 替代WEBSERVICE公式(VBA函数)
- java - 如何打开电池使用活动?
- django - django admin queryset 在字段中显示相关对象
- java - 我需要传递一个条件作为参数
- java - 如何在两个表中进行记录