Streams متوسط

استخدم flatMapping() للتسطيح داخل مُجمِّع grouping.

✕ Java 8
// Flatten within a grouping collector
// Required complex custom collector
Map<String, Set<String>> tagsByDept =
    // no clean way in Java 8
✓ Java 9+
var tagsByDept = employees.stream()
    .collect(groupingBy(
        Emp::dept,
        flatMapping(
            e -> e.tags().stream(),
            toSet()
        )
    ));
هل ترى مشكلة في هذا الكود؟ أخبرنا.
🧩

قابل للتركيب

يعمل كمُجمِّع فرعي داخل groupingBy.

📐

تمريرة واحدة

سطّح وجمّع في تمريرة Stream واحدة.

🔗

قابل للتداخل

ادمجه مع مُجمِّعات فرعية أخرى.

الأسلوب القديم
flatMap متداخل
الأسلوب الحديث
flatMapping()
منذ JDK
9
الصعوبة
متوسط
Collectors.flatMapping()
متاح

متاح على نطاق واسع منذ JDK 9 (سبتمبر 2017)

يُطبّق Collectors.flatMapping() تعييناً من-واحد-إلى-كثير كمُجمِّع فرعي. وهو مكافئ المُجمِّع لـ Stream.flatMap() — مفيد داخل groupingBy أو partitioningBy.

مشاركة 𝕏 🦋 in