Streams متوسط

أصدر صفراً أو أكثر من العناصر لكل إدخال دون إنشاء Streams وسيطة.

✕ Java 8
stream.flatMap(order ->
    order.items().stream()
        .map(item -> new OrderItem(
            order.id(), item)
        )
);
✓ Java 16+
stream.<OrderItem>mapMulti(
    (order, downstream) -> {
        for (var item : order.items())
            downstream.accept(
                new OrderItem(order.id(), item));
    }
);
هل ترى مشكلة في هذا الكود؟ أخبرنا.

تخصيص أقل

لا Stream وسيطة تُنشأ لكل عنصر.

🎯

أسلوب إمراطي

استخدم الحلقات والشروط مباشرةً.

📐

مرن

أصدر صفراً أو واحداً أو عناصر كثيرة بتحكم كامل.

الأسلوب القديم
flatMap + List
الأسلوب الحديث
mapMulti()
منذ JDK
16
الصعوبة
متوسط
Stream.mapMulti()
متاح

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

mapMulti() بديل إمراطي لـ flatMap يتجنّب إنشاء كائنات Stream وسيطة لكل عنصر. أكثر كفاءةً عندما ينتج التعيين عدداً صغيراً من العناصر.

مشاركة 𝕏 🦋 in