ifPresent流的其他方法

约翰尼·威勒

我想知道如果过滤流后不存在某些值怎么办。

让我们假设该代码:

foo.stream().filter(p -> p.someField == someValue).findFirst().ifPresent(p -> {p.someField = anotherValue; someBoolean = true;}); 

我怎么放的某种ElseifPresent的价值情况下是不存在?

orElse我可以在Stream上调用一些方法findFirst,但是我看不到使用这些方法的方法。orElse

马诺斯·尼古拉迪斯(Manos Nikolaidis)

findFirst返回Optional描述此流的第一个元素描述;如果流为空,则返回空Optional。

如果要在Optional不为空时应用函数,则应使用maporElseGet如果Optional为空,可以调用另一个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;
   });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章