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; }); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |