Stream takeWhile / dropWhile
Elemente aus einem Stream basierend auf einem Prädikat nehmen oder überspringen.
Code-Vergleich
✕ Java 8
List<Integer> result = new ArrayList<>();
for (int n : sorted) {
if (n >= 100) break;
result.add(n);
}
// no stream equivalent in Java 8
✓ Java 9+
var result = sorted.stream()
.takeWhile(n -> n < 100)
.toList();
// or: .dropWhile(n -> n < 10)
Problem mit diesem Code entdeckt? Sag uns Bescheid.
Warum der moderne Weg gewinnt
Kurzschlussauswertung
Stoppt die Verarbeitung, sobald das Prädikat fehlschlägt.
Pipeline-freundlich
Kettet sich natürlich mit anderen Stream-Operationen.
Deklarativ
takeWhile liest sich wie natürliche Sprache: 'nehme, solange kleiner als 100'.
Alter Ansatz
Manuelle Schleife
Moderner Ansatz
takeWhile/dropWhile
Seit JDK
9
Schwierigkeitsgrad
Einsteiger
JDK-Unterstützung
Stream takeWhile / dropWhile
Verfügbar
Weitgehend verfügbar seit JDK 9 (Sept. 2017)
Wie es funktioniert
takeWhile() gibt Elemente zurück, solange das Prädikat wahr ist, und stoppt beim ersten Falsch-Wert. dropWhile() überspringt Elemente, solange es wahr ist, und gibt den Rest zurück. Beide funktionieren am besten bei geordneten Streams.
Zugehörige Dokumentation