【问题标题】:java - how to break from a forEach method using lambda expression [duplicate]java - 如何使用 lambda 表达式从 forEach 方法中中断[重复]
【发布时间】: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


【解决方案1】:
data.stream().anyMatch(item -> {condition})

【讨论】:

  • 我不认为这是正确的。如果condition 不是一个表达式,而是一组计算呢?
猜你喜欢
  • 2019-03-18
  • 2010-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
相关资源
最近更新 更多