Collections Intermédiaire

Calcule deux agrégations en un seul passage du stream.

✕ Java 8
long count = items.stream().count();
double sum = items.stream()
    .mapToDouble(Item::price)
    .sum();
var result = new Stats(count, sum);
✓ Java 12+
var result = items.stream().collect(
    Collectors.teeing(
        Collectors.counting(),
        Collectors.summingDouble(Item::price),
        Stats::new
    )
);
Un problème avec ce code ? Dites-le nous.

Un seul passage

Traite le stream une seule fois au lieu de deux.

🧩

Composable

Combine deux collectors quelconques avec une fonction de fusion.

🔒

Résultat immutable

Fusionne directement dans un record ou un objet valeur.

Ancienne Approche
Deux passages
Approche Moderne
teeing()
Depuis JDK
12
Difficulté
Intermédiaire
Collectors.teeing()
Disponible

Disponible depuis JDK 12 (mars 2019)

Collectors.teeing() envoie chaque élément à deux collectors aval et combine les résultats. Cela évite de parcourir les données deux fois ou d'utiliser un accumulateur mutable.

Partager 𝕏 🦋 in