Streams Intermediário

Emita zero ou mais elementos por entrada sem criar streams intermediários.

✕ 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));
    }
);
Viu um problema com este código? Nos avise.

Menos alocação

Nenhum Stream intermediário criado por elemento.

🎯

Estilo imperativo

Use loops e condicionais diretamente.

📐

Flexível

Emita zero, um ou muitos elementos com controle total.

Abordagem Antiga
flatMap + List
Abordagem Moderna
mapMulti()
Desde o JDK
16
Dificuldade
Intermediário
Stream.mapMulti()
Disponível

Amplamente disponível desde o JDK 16 (março de 2021)

mapMulti() é uma alternativa imperativa ao flatMap que evita a criação de objetos Stream intermediários para cada elemento. É mais eficiente quando o mapeamento produz um número pequeno de elementos.

Compartilhar 𝕏 🦋 in