· Michael Stöckler · Development · 1 min read
Java 24: Stream Gatherers - Die Revolution der Stream-Verarbeitung
Die neue Java-Version bringt mit Stream Gatherers eine mächtige Erweiterung der Stream API, die Entwicklern völlig neue Möglichkeiten der Datenverarbeitung eröffnet.
Eine lang erwartete Ergänzung
Seit der Einführung der Stream API in Java 8 mussten Entwickler mit einem fixen Set von intermediären Operationen arbeiten. Während terminale Operationen durch collect(Collector)
erweiterbar waren, fehlte eine entsprechende Möglichkeit für Zwischenoperationen. Mit JDK 24 ändert sich das grundlegend durch die Einführung von Stream Gatherers.
Was sind Stream Gatherers?
Stream Gatherers sind das Pendant zu Collectors für intermediäre Operationen. Sie werden über die neue Methode Stream.gather(Gatherer)
eingebunden und ermöglichen es, Streams flexibel zu transformieren. Ein Gatherer kann dabei:
- Eins-zu-eins, eins-zu-viele, viele-zu-eins oder viele-zu-viele Transformationen durchführen
- Zustand zwischen Elementverarbeitungen speichern
- Die Verarbeitung vorzeitig beenden (Short-Circuit)
- Optional parallel ausgeführt werden
Mitgelieferte Implementierungen
Das JDK liefert bereits einige nützliche Gatherers in der Klasse java.util.stream.Gatherers
:
Gatherer | Beschreibung |
---|---|
fold | Aggregiert Elemente inkrementell und emittiert das Ergebnis am Ende |
mapConcurrent | Führt parallele Element-Transformationen durch |
scan | Wendet eine Funktion auf den aktuellen Zustand und das aktuelle Element an |
windowFixed | Gruppiert Elemente in Listen fester Größe |
windowSliding | Erstellt überlappende Fenster fester Größe |
Implementierung eigener Gatherers
Ein Gatherer wird durch vier Funktionen definiert:
- Initializer: Erstellt ein Objekt für den privaten Zustand
- Integrator: Verarbeitet neue Elemente und emittiert Ergebnisse
- Combiner (optional): Ermöglicht parallele Verarbeitung
- Finisher: Wird am Ende aufgerufen und kann finale Elemente emittieren