Streams Średniozaawansowany

Emit zero or more elements per input without creating intermediate streams.

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

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
Stream.mapMulti()
Dostępne

Widely available since JDK 16 (March 2021)

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.

Udostępnij 𝕏 🦋 in