在Iterable上使用外部迭代时,我们使用break或return从enhanced为每个循环:
用于(SomeObject对象:someObjects){
如果(满足某些条件){
break;//或返回obj
}
}
我们如何在Java 8 lambda表达式中使用内部迭代中断或返回,如:
someObjects.forEach(obj->{
//在这里做什么?
})
如果需要,不应该使用forEach,而应该使用流上可用的其他方法之一;哪一个,取决于你的目标是什么
例如,如果此循环的目标是查找与某个谓词匹配的第一个元素:
可选<;SomeObject>;结果=
someObjects.stream().filter(obj->;满足某些条件)。findFirst();
(注意:这不会迭代整个集合,因为流是惰性计算的-它将在匹配条件的第一个对象处停止)
如果您只想知道集合中是否存在条件为true的元素,可以使用anyMatch:
boolean result=someObjects.stream().anyMatch(obj->;满足某些条件);