Streams Intermédiaire

Émet zéro ou plusieurs éléments par entrée sans créer de streams intermédiaires.

✕ 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));
    }
);
Un problème avec ce code ? Dites-le nous.

Moins d'allocations

Aucun Stream intermédiaire créé par élément.

🎯

Style impératif

Utilisez des boucles et des conditionnels directement.

📐

Flexible

Émettez zéro, un ou plusieurs éléments avec un contrôle total.

Ancienne Approche
flatMap + List
Approche Moderne
mapMulti()
Depuis JDK
16
Difficulté
Intermédiaire
Stream.mapMulti()
Disponible

Disponible depuis JDK 16 (mars 2021)

mapMulti() est une alternative impérative à flatMap qui évite de créer des objets Stream intermédiaires pour chaque élément. C'est plus efficace quand le mapping produit un petit nombre d'éléments.

Partager 𝕏 🦋 in