我想知道如果过滤流后不存在某些值怎么办。
让我们假设该代码:
foo.stream().filter(p -> p.someField == someValue).findFirst().ifPresent(p -> {p.someField = anotherValue; someBoolean = true;});
我怎么放的某种Else
后ifPresent
的价值情况下是不存在?
orElse
我可以在Stream上调用一些方法findFirst
,但是我看不到使用这些方法的方法。orElse
findFirst
返回Optional
描述此流的第一个元素的描述;如果流为空,则返回空Optional。
如果要在Optional
不为空时应用函数,则应使用map
。orElseGet
如果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] 删除。
我来说两句