Collections Intermedio

Calcula dos agregaciones en una sola pasada del 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
    )
);
¿Ves un problema con este código? Cuéntanos.

Una sola pasada

Procesa el stream una vez en lugar de dos.

🧩

Componible

Combina dos collectors cualesquiera con una función de fusión.

🔒

Resultado inmutable

Fusiona directamente en un record u objeto de valor.

Enfoque Antiguo
Dos pasadas
Enfoque Moderno
teeing()
Desde JDK
12
Dificultad
Intermedio
Collectors.teeing()
Disponible

Ampliamente disponible desde JDK 12 (marzo 2019)

Collectors.teeing() envía cada elemento a dos collectors downstream y combina los resultados. Esto evita recorrer los datos dos veces o usar un acumulador mutable.

Compartir 𝕏 🦋 in