Streams متوسط

استخدم Predicate لإيقاف التكرار — مثل حلقة for في صيغة Stream.

✕ Java 8
Stream.iterate(1, n -> n * 2)
    .limit(10)
    .forEach(System.out::println);
// can't stop at a condition
✓ Java 9+
Stream.iterate(
    1,
    n -> n < 1000,
    n -> n * 2
).forEach(IO::println);
// stops when n >= 1000
هل ترى مشكلة في هذا الكود؟ أخبرنا.
🎯

إنهاء طبيعي

توقف بناءً على شرط لا بحد تعسفي.

📐

مكافئ حلقة for

نفس دلالات for(seed; hasNext; next).

🛡️

لا خطر Stream لا نهائي

Predicate يضمن الإنهاء.

الأسلوب القديم
iterate + limit
الأسلوب الحديث
iterate(seed, pred, op)
منذ JDK
9
الصعوبة
متوسط
Stream.iterate() مع Predicate
متاح

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

تعمل Stream.iterate(seed, hasNext, next) ثلاثية الوسائط كحلقة for: seed هو البداية و hasNext يُحدّد متى تتوقف و next تُنتج القيمة التالية.

مشاركة 𝕏 🦋 in