Stream.mapMulti()
Emit zero or more elements per input without creating intermediate streams.
Porównanie kodu
✕ 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));
}
);
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Less allocation
No intermediate Stream created per element.
Imperative style
Use loops and conditionals directly.
Flexible
Emit zero, one, or many elements with full control.
Stare podejście
flatMap + List
Nowoczesne podejście
mapMulti()
Od JDK
16
Poziom trudności
Średniozaawansowany
Wsparcie JDK
Stream.mapMulti()
Dostępne
Widely available since JDK 16 (March 2021)
Jak to działa
mapMulti() is an imperative alternative to flatMap that avoids creating intermediate Stream objects for each element. It's more efficient when the mapping produces a small number of elements.
Powiązana dokumentacja