Luc*_*che 4 java filter java-8 java-stream
我有以下代码片段,它收集具有name
包含特定过滤器的字符串属性的特定对象filterName
.
List<Foo> filteredFoo= fooList.stream()
.filter(Objects::nonNull)
.filter(myFoo -> {
if (Strings.isNullOrEmpty(myFoo.getName()))
return false;
return myFoo.getName().contains(filterName);
}
).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
它按预期工作,但我想知道是否有更优雅的方式以if-statement
函数方式编写并以比在过滤器中具有条件块更好的方式检查空或null属性.
替换filter
为以下内容:
.filter(myFoo -> Optional.ofNullable(myFoo.getName())
.filter(n -> n.contains(filterName))
.isPresent())
Run Code Online (Sandbox Code Playgroud)
甚至:
.filter(myFoo -> {
String name = myFoo.getName();
return name != null && name.contains(filterName)
})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2104 次 |
最近记录: |