Stream.mapMulti()
Émet zéro ou plusieurs éléments par entrée sans créer de streams intermédiaires.
Comparaison de Code
✕ 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.
Pourquoi la méthode moderne gagne
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
Support JDK
Stream.mapMulti()
Disponible
Disponible depuis JDK 16 (mars 2021)
Comment ça fonctionne
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.
Documentation Associée