java – ifPresent Stream的其他方法

前端之家收集整理的这篇文章主要介绍了java – ifPresent Stream的其他方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > 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;
   });
原文链接:https://www.f2er.com/java/239829.html

猜你在找的Java相关文章