Collections متوسط

احسب تجميعَين في تمريرة واحدة على 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
    )
);
هل ترى مشكلة في هذا الكود؟ أخبرنا.

تمريرة واحدة

تمر على Stream مرة واحدة بدلاً من مرتين.

🧩

قابل للتركيب

ادمج أي مُجمِّعَين باستخدام دالة دمج.

🔒

نتيجة ثابتة

ادمج مباشرةً في record أو كائن قيمة.

الأسلوب القديم
تمريرتان على البيانات
الأسلوب الحديث
teeing()
منذ JDK
12
الصعوبة
متوسط
Collectors.teeing()
متاح

متاح على نطاق واسع منذ JDK 12 (مارس 2019)

يُرسل Collectors.teeing() كل عنصر إلى مُجمِّعَين فرعيَّين ثم يدمج النتيجتين. يتجنّب هذا تكرار تدفق البيانات مرتين أو استخدام متراكم قابل للتعديل.

مشاركة 𝕏 🦋 in