Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie unterbrochen oder zurück von forEach
Operationen zurückkehren kann oder zurückkehren?
herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die forEach
-Methode von Stream unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht.
Weitere Lesen: Java -Stream -API -Verbesserungen
forEach
-Methode ist ein Anschlussbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Es ist für jedes Element ausgelegt. break
return
List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.stream().forEach(name -> { System.out.println(name); });
forEach
Warum können Sie nicht Pause verwenden oder zurückkehren?
-Anweisung innerhalb des Lambda -Ausdrucks verlässt nur den Lambda -Ausdruck selbst und verlässt nicht die forEach
oder seine geschlossene Methode. Der Versuch, break
oder continue
zu verwenden, führt zu einem Kompilierungsfehler: return
forEach
break
Alternative Methode continue
names.stream().forEach(name -> { if (name.equals("Bob")) { break; // 编译错误 } });
for
-Methode bedeutet, dass die Stream-Verarbeitung, wenn die Bedingung erfüllt ist, kurzgeschlossen wird.
for (String name : names) { if (name.equals("Bob")) { break; } System.out.println(name); }
verwenden, um die Elemente zu verarbeiten, bis ein bestimmter Zustand erfüllt ist. anyMatch()
boolean found = names.stream().anyMatch(name -> { if (name.equals("Bob")) { // 执行操作 System.out.println("找到Bob"); return true; // 这将使Stream短路 } System.out.println(name); return false; });
takeWhile
names.stream() .takeWhile(name -> !name.equals("Bob")) .forEach(System.out::println);
anyMatch
, noneMatch
, takeWhile
(Java 9) Methoden möglicherweise angemessener sein. Die forEach
-Methode im Java 8 -Stream erlaubt nicht die Verwendung von break
oder return
wie herkömmliche Schleifen, aber es gibt verschiedene Möglichkeiten, diese Einschränkung zu umgehen. Wenn Sie diese Methoden verstehen, können Sie die beste Option basierend auf der tatsächlichen Situation auswählen.
Das obige ist der detaillierte Inhalt vonBrechen oder aus Java 8 Stream foreach zurückkehren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!