Collectors.teeing()
Tek bir stream geçişinde iki toplama işlemi gerçekleştirin.
Kod Karşılaştırması
✕ 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
)
);
Bu kodda bir sorun mu gördünüz? Bize bildirin.
Modern yöntem neden daha iyi
Tek geçiş
Stream'i iki yerine bir kez işleyin.
Birleştirilebilir
Herhangi iki collector'ı birleştirme fonksiyonuyla bir araya getirin.
Değişmez sonuç
Doğrudan bir record veya değer nesnesine birleştirin.
Eski Yaklaşım
İki Geçiş
Modern Yaklaşım
teeing()
JDK'dan itibaren
12
Zorluk
Orta
JDK Desteği
Collectors.teeing()
Mevcut
JDK 12'den itibaren geniş çapta kullanılabilir (Mart 2019)
Nasıl çalışır
Collectors.teeing(), her elemanı iki alt collector'a gönderir ve sonuçları birleştirir. Bu sayede veriyi iki kez akıtmaktan veya değiştirilebilir bir biriktirici kullanmaktan kaçınılır.
İlgili Belgeler