加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – ifPresent Stream的其他方法

发布时间:2020-12-15 01:00:25 所属栏目:Java 来源:网络整理
导读:参见英文答案 If not null – java 8 style2个 我想知道如果在过滤流后不存在某些值时如何做某些行为. 我们假设代码: foo.stream().filter(p - p.someField == someValue).findFirst().ifPresent(p - {p.someField = anotherValue; someBoolean = true;});
参见英文答案 > 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;
   });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读