Stream.mapMulti()
Emetti zero o più elementi per input senza creare stream intermedi.
Confronto Codice
✕ 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));
}
);
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Meno allocazione
Nessuno Stream intermedio creato per elemento.
Stile imperativo
Usa loop e condizionali direttamente.
Flessibile
Emetti zero, uno o molti elementi con pieno controllo.
Approccio Vecchio
flatMap + List
Approccio Moderno
mapMulti()
Dal JDK
16
Difficoltà
Intermedio
Supporto JDK
Stream.mapMulti()
Disponibile
Ampiamente disponibile dal JDK 16 (marzo 2021)
Come funziona
mapMulti() è un'alternativa imperativa a flatMap che evita la creazione di oggetti Stream intermedi per ogni elemento. È più efficiente quando la mappatura produce un numero ridotto di elementi.
Documentazione Correlata