Streams Intermedio

Emetti zero o più elementi per input senza creare stream intermedi.

✕ 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.

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
Stream.mapMulti()
Disponibile

Ampiamente disponibile dal JDK 16 (marzo 2021)

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.

Condividi 𝕏 🦋 in