Stream.mapMulti()
Emite cero o más elementos por entrada sin crear streams intermedios.
Comparación de Código
✕ 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));
}
);
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Menos asignaciones
No se crea un Stream intermedio por elemento.
Estilo imperativo
Usa bucles y condicionales directamente.
Flexible
Emite cero, uno o muchos elementos con control total.
Enfoque Antiguo
flatMap + List
Enfoque Moderno
mapMulti()
Desde JDK
16
Dificultad
Intermedio
Soporte JDK
Stream.mapMulti()
Disponible
Ampliamente disponible desde JDK 16 (marzo 2021)
Cómo funciona
mapMulti() es una alternativa imperativa a flatMap que evita crear objetos Stream intermedios para cada elemento. Es más eficiente cuando el mapeo produce una pequeña cantidad de elementos.
Documentación Relacionada