Collections Intermedio

Calcola due aggregazioni in un unico passaggio dello 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
    )
);
Vedi un problema con questo codice? Faccelo sapere.

Passaggio singolo

Elabora lo stream una volta invece di due.

🧩

Componibile

Combina qualsiasi due collector con una funzione di unione.

🔒

Risultato immutabile

Unisci direttamente in un record o value object.

Approccio Vecchio
Due passaggi
Approccio Moderno
teeing()
Dal JDK
12
Difficoltà
Intermedio
Collectors.teeing()
Disponibile

Ampiamente disponibile dal JDK 12 (marzo 2019)

Collectors.teeing() invia ogni elemento a due collector downstream e unisce i risultati. Evita di scorrere i dati due volte o di usare un accumulatore mutabile.

Condividi 𝕏 🦋 in