java - 如何使用 lambda 表达式从 forEach 方法中中断[重复]
Posted
技术标签:
【中文标题】java - 如何使用 lambda 表达式从 forEach 方法中中断[重复]【英文标题】:java - how to break from a forEach method using lambda expression [duplicate] 【发布时间】:2018-09-29 13:57:04 【问题描述】:基本上我有一个列表,它的元素将被一一处理,直到满足某些条件。如果任何元素满足该条件,则应返回true
,否则返回false
。方法如下:
public boolean method(List<Integer> data)
data.forEach(item ->
if (some condition is met)
return true; // Getting Unexpected return value here
);
return false;
有没有办法在满足条件后立即跳出这个 forEach 循环,而不是遍历所有元素?
【问题讨论】:
看起来像Stream#anyMatch
?或者这对你怎么不起作用?
不,但你可以使用 for 循环
@UnholySheep 这是正确的方法。您应该提供该建议的答案...
“但我想知道是否有办法摆脱 forEach 循环。” => 不,没有。为什么要这样做?有(更好的)方法可以做到这一点。 forEach
只是按照它所说的去做:它为每个元素执行一个动作,而不是更少。
@Eugene 是的,这就是为什么我什至不会告诉别人(尤其是初学者)有这种可能性。除此之外,它不仅丑陋,而且使用了一种并非为此目的而设计的机制。
【参考方案1】:
data.stream().anyMatch(item -> condition)
【讨论】:
我不认为这是正确的。如果condition
不是一个表达式,而是一组计算呢?以上是关于java - 如何使用 lambda 表达式从 forEach 方法中中断[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如果使用我的服务使用Java 8 lambda / streams列表不为空,如何从列表中删除每个元素