从Java8流forEach中断或返回?

Iterable上使用外部迭代时,我们使用breakreturn从enhanced为每个循环:

用于(SomeObject对象:someObjects){
如果(满足某些条件){
break;//或返回obj
}
}

我们如何在Java 8 lambda表达式中使用内部迭代中断返回,如:

someObjects.forEach(obj-&gt{
//在这里做什么?
})

如果需要,不应该使用forEach,而应该使用流上可用的其他方法之一;哪一个,取决于你的目标是什么

例如,如果此循环的目标是查找与某个谓词匹配的第一个元素:

可选<SomeObject>结果=
someObjects.stream().filter(obj->满足某些条件)。findFirst();

(注意:这不会迭代整个集合,因为流是惰性计算的-它将在匹配条件的第一个对象处停止)

如果您只想知道集合中是否存在条件为true的元素,可以使用anyMatch

boolean result=someObjects.stream().anyMatch(obj->满足某些条件);

发表评论