【发布时间】: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 是的,这就是为什么我什至不会告诉别人(尤其是初学者)有这种可能性。除此之外,它不仅丑陋,而且使用了一种并非为此目的而设计的机制。
标签: java lambda foreach java-8