从Java 8流中断或返回每个?
当在break上使用外部迭代时,我们从增强型for-each循环使用return或return:
for (SomeObject obj : someObjects) {
if (some_condition_met) {
break; // or return obj
}
}
我们怎样才能在Java 8 lambda表达式中使用内部迭代break或return:
someObjects.forEach(obj -> {
//what to do here?
})
11个解决方案
269 votes
如果你需要这个,你不应该使用anyMatch,而是使用流上可用的其他方法之一; 哪一个,取决于你的目标是什么。
例如,如果此循环的目标是找到与某个谓词匹配的第一个元素:
Optional result =
someObjects.stream().filter(obj -> some_condition_met).findFirst();
(注意:这不会迭代整个集合,因为流被懒惰地评估 - 它将停在匹配条件的第一个对象)。
如果您只是想知道条件为真的集合中是否有元素,您可以使用anyMatch:
boolean result = someObjects.stream().anyMatch(obj -> some_condition_met);
Jesper answered 2019-03-13T15:04:54Z
41 votes