从Java 8流中断还是返回forEach?
当在上使用外部迭代时,Iterable
我们使用break
或return
从增强的for-each
循环中获取:
for (SomeObject obj : someObjects) { if (some_condition_met) {
break; // or return obj
}
}
我们如何break
或在Java 8 lambda表达式中return
使用内部迭代,例如:
someObjects.forEach(obj -> { //what to do here?
})
回答:
如果需要,则不应使用forEach
,而应使用流中可用的其他方法之一。哪一个取决于你的目标是什么。
例如,如果此循环的目标是找到与某些谓词匹配的第一个元素:
Optional<SomeObject> result = someObjects.stream().filter(obj -> some_condition_met).findFirst();
(注意:这不会迭代整个集合,因为流是惰性计算的-它将在与条件匹配的第一个对象处停止)。
如果你只想知道集合中是否存在条件为真的元素,则可以使用anyMatch:
boolean result = someObjects.stream().anyMatch(obj -> some_condition_met);
以上是 从Java 8流中断还是返回forEach? 的全部内容, 来源链接: utcz.com/qa/422709.html