java 8中map方法的语法是:
<R> Stream<R> map(Function<? super T,? extends R> mapper)
Run Code Online (Sandbox Code Playgroud)
但我可以使用 lambda 表达式:
personList.stream().filter(p -> p.getPersonType().equals("student"))
.map(p -> new Student(p.getId(), p.getName()))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
map 方法中的参数如何等同于 Function 数据类型。请帮助我理解这一点。
谢谢
该功能Function<? super T,? extends R> mapper的的map方法基本上代表任何功能采取一个参数并在该特定情况下返回一个值,因此拉姆达p -> new Student(p.getId(), p.getName()) 是一个函数采取Personp和返回Student因此配合到该完美。
换个角度来看,lambda 相当于:
.map(new Function<Person, Student>() {
@Override
public Student apply(Person p) {
return new Student(p.getId(), p.getName());
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9713 次 |
| 最近记录: |