从 Java 8 forEach 循环返回一个值

新手上路,请多包涵

在下面的示例中,someObjects 是一个集合。如果条件在循环中匹配,我试图返回 true,但这似乎无法编译。但是,当我只添加“return”时,它工作正常。我需要解决的问题是什么?

 public boolean find(){

    someObjects.forEach(obj -> {
       if (some_condition_met) {
          return true;
       }
    });

    return false;
}

编译错误

Iterable 类型中的 forEach(Consumer) 方法不适用于参数 (( obj) -> {})

原文由 Punter Vicky 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

forEach Collection 需要一个 Consumer 这意味着一个函数接受任何值,但不返回任何值。这就是为什么你不能使用 return true;return; 工作正常。

如果您想在满足条件时跳出循环,最好使用简单的 for(...) 循环。我假设 obj 的类型是 Object

 for (Object obj : someObjects) {
  if (some_condition_met) {
    return true;
  }
}

return false;

原文由 pablochan 发布,翻译遵循 CC BY-SA 3.0 许可协议

我猜你想这样做:

 public boolean find(){
    return someObjects.stream().anyMatch(o -> your_condition);
}

原文由 Jason Hu 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题