java – ifPresent Stream的其他方法
发布时间:2020-05-28 12:32:28 所属栏目:Java 来源:互联网
导读:参见英文答案 If not null – java 8 style2个 我想知道如果在过滤流后不存在某些值时如何做某些行为. 我们假设代码: foo.stream().filter(p - p.someField == someValue).findFirst().ifPresent(p - {p.someField
|
参见英文答案 >
If not null – java 8 style2个
我们假设代码: foo.stream().filter(p -> p.someField == someValue).findFirst().ifPresent(p -> {p.someField = anotherValue; someBoolean = true;});
如果没有价值,我如何在ifPresent之后放置某种Else? 我可以在findFirst之后调用Stream上的一些orElse方法,但我看不到用orElse这样做的方法 解决方法findFirst返回描述此流的第一个元素的Optional,如果流为空,则返回空Optional.如果要在Optional不为空时应用函数,则应使用map.如果Optional为空,orElseGet可以调用另一个lambda. foo.stream()
.filter(p -> p.someField == someValue)
.findFirst().map(p -> {
p.someField = anotherValue;
someBoolean = true;
return p;
}).orElseGet(() -> {
P p = new P();
p.someField = evenAnotherValue;
someBoolean = false;
return p;
}); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
