当前位置: 首页 > 知识库问答 >
问题:

从Java8流foreach中断还是返回?

公西嘉玉
2023-03-14

iterable上使用外部迭代时,我们使用增强的for-each循环中的breakreturn作为:

for (SomeObject obj : someObjects) {
   if (some_condition_met) {
      break; // or return obj
   }
}

如何使用Java 8 lambda表达式中的内部迭代来breakreturn

someObjects.forEach(obj -> {
   //what to do here?
})

共有1个答案

呼延鹏云
2023-03-14

如果需要这样做,则不应使用foreach,而应使用流上可用的其他方法之一;哪一个,取决于你的目标是什么。

例如,如果此循环的目标是查找与某个谓词匹配的第一个元素:

Optional<SomeObject> result =
    someObjects.stream().filter(obj -> some_condition_met).findFirst();

(注意:这不会迭代整个集合,因为流是懒洋洋地求值的--它会在匹配条件的第一个对象处停止)。

如果只想知道集合中是否存在条件为true的元素,则可以使用anymatch:

boolean result = someObjects.stream().anyMatch(obj -> some_condition_met);
 类似资料:
  • 问题内容: 当在上使用外部迭代时,我们使用或从增强的循环中获取: 我们如何或在Java 8 lambda表达式中使用内部迭代,例如: 问题答案: 如果需要,则不应使用,而应使用流中可用的其他方法之一。哪一个取决于你的目标是什么。 例如,如果此循环的目标是找到与某些谓词匹配的第一个元素: (注意:这不会迭代整个集合,因为流是惰性计算的-它将在与条件匹配的第一个对象处停止)。 如果你只想知道集合中是否

  • 产出: 请提供2个方法将产生不同输出的例子。

  • 我正在从文件中读取值并获取列表。如下- 一旦我得到这个

  • 在这篇文章中我将向你演示如何使用Java8中的foreach操作List和Map 1. Foreach操作Map 1.1 正常方式遍历Map Map<String, Integer> items = new HashMap<>(); items.put("A", 10); items.put("B", 20); items.put("C", 30); items.put("D", 40); ite

  • 有一个简单的: 以及任务对象的列表。如何通过使用获得每个作为的列表。我试过这个: 但它返回

  • 问题内容: 我试图将一些for-each循环更改为lambda- 方法,以发现lambda表达式的可能性。以下似乎是可能的: 带lambda 但是下一个无效: 带lambda 最后一行的语法是否有问题,或者不可能从方法中返回? 问题答案: 在那里,从λ表达式,而不是从包含方法返回。而不需要流: 这里将流限制为与谓词匹配的那些项,然后返回带有第一个匹配条目的。 这看起来不如for循环方法有效,但实际