外部反復を使用する場合は、次のように拡張 for-each ループの または をIterable
使用します。break
return
for (SomeObject obj : someObjects) {
if (some_condition_met) {
break; // or return obj
}
}
次のように Java 8 ラムダ式で内部反復を使用するにbreak
はどうすればよいでしょうか。return
someObjects.forEach(obj -> {
//what to do here?
})
ベストアンサー1
これが必要な場合は、 ではforEach
なく、ストリームで使用可能な他のメソッドのいずれかを使用する必要があります。どれを使用するかは、目的によって異なります。
たとえば、このループの目的が、ある述語に一致する最初の要素を見つけることだとすると、
Optional<SomeObject> result =
someObjects.stream().filter(obj -> some_condition_met).findFirst();
(注: ストリームは遅延評価されるため、コレクション全体が反復されるわけではなく、条件に一致する最初のオブジェクトで停止します)。
条件が真となる要素がコレクション内に存在するかどうかだけを知りたい場合は、次のようにしますanyMatch
。
boolean result = someObjects.stream().anyMatch(obj -> some_condition_met);