Maj*_*imi 3 java lambda java-8
"Java 8 Lambdas:实用功能编程"有一个peek
在Stream
API中使用方法的例子.这段代码打印名称以"The"开头的艺术家国籍:
Set<Nationality> nationalities = album.getMusician()
.filter(artist -> artist.getName().startsWith("The"))
.map(artist -> artist.getNationality())
.peek(nation -> System.out.println(nation))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
我想用方法引用重写此代码:
Set<Nationality> nationalities = album.getMusician()
.filter(artist -> artist.getName().startsWith("The"))
.map(Artist::getNationality)
.peek(System.out::println)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
有没有重写的解决方案filter(artist -> artist.getName().startsWith("The"))
?
您需要创建一个单独的方法,该方法接受一个Artist并返回一个布尔值:
private boolean nameStartsWithThe(Artist a) {
return a.getName().startsWith("The");
}
Set<Nationality> nationalities = album.getMusician()
.filter(this::nameStartsWithThe)
Run Code Online (Sandbox Code Playgroud)
或使用静态方法:
private static boolean nameStartsWithThe(Artist a) {
return a.getName().startsWith("The");
}
Set<Nationality> nationalities = album.getMusician()
.filter(MyClass::nameStartsWithThe)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1878 次 |
最近记录: |