1. ホーム
  2. java

[解決済み] Java 8 のストリーム forEach からブレークまたはリターンしますか?

2022-03-14 21:05:18

質問

を使用する場合 外部イテレーション の上に Iterable を使用します。 break または return として、拡張されたfor-eachループから。

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

どうすれば break または return を使用しています。 内部反復 のようなJava 8のラムダ式で。

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

解決方法は?

もし、これが必要なら、あなたは forEach しかし、ストリームで利用可能な他のメソッドの1つです。

例えば、このループの目的が、ある述語にマッチする最初の要素を見つけることである場合。

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

(注意: ストリームは遅延評価されるため、これはコレクション全体をイテレートしません。)

コレクション内に条件が成立する要素があるかどうかを知りたいだけなら anyMatch :

boolean result = someObjects.stream().anyMatch(obj -> some_condition_met);