Stream.mapMulti()
Null oder mehr Elemente pro Eingabe ausgeben, ohne Zwischen-Streams zu erstellen.
Code-Vergleich
✕ Java 8
stream.flatMap(order ->
order.items().stream()
.map(item -> new OrderItem(
order.id(), item)
)
);
✓ Java 16+
stream.<OrderItem>mapMulti(
(order, downstream) -> {
for (var item : order.items())
downstream.accept(
new OrderItem(order.id(), item));
}
);
Problem mit diesem Code entdeckt? Sag uns Bescheid.
Warum der moderne Weg gewinnt
Weniger Allokationen
Kein Zwischen-Stream pro Element erstellt.
Imperativer Stil
Schleifen und Bedingungen direkt verwenden.
Flexibel
Null, eins oder viele Elemente mit voller Kontrolle ausgeben.
Alter Ansatz
flatMap + List
Moderner Ansatz
mapMulti()
Seit JDK
16
Schwierigkeitsgrad
Fortgeschritten
JDK-Unterstützung
Stream.mapMulti()
Verfügbar
Weitgehend verfügbar seit JDK 16 (März 2021)
Wie es funktioniert
mapMulti() ist eine imperative Alternative zu flatMap, die das Erstellen von Zwischen-Stream-Objekten für jedes Element vermeidet. Es ist effizienter, wenn die Abbildung eine kleine Anzahl von Elementen erzeugt.
Zugehörige Dokumentation