الدرس 41: التنقل في المجموعات باستخدام المكررات
هناك طرق عديدة للتكرار عبر المجموعات، ولكل منها قدرات مختلفة.
1. حلقة for المحسنة (For-Each)
هذه هي أبسط طريقة للتكرار عبر أي مجموعة (List أو Set أو مفاتيح الخرائط) تنفذ واجهة Iterable. وهي للقراءة فقط وموصى بها بشدة لسهولتها.
java
List
for (String planet : planets) { System.out.println(planet); }
2. واجهة Iterator
توفر جميع فئات المجموعات دالة iterator() التي تعيد كائن Iterator. هذه هي الطريقة الوحيدة لحذف العناصر بأمان من المجموعة أثناء التكرار عليها.
دوال المكرر الرئيسية
hasNext(): تعيدtrueإذا كان هناك المزيد من العناصر.next(): تعيد العنصر التالي وتقدم المكرر.remove(): تحذف العنصر الأخير الذي أعادته دالةnext().
java import java.util.Iterator;
List
while (it.hasNext()) { Integer num = it.next(); if (num % 2 == 0) { it.remove(); // حذف آمن أثناء التكرار } }
System.out.println(numbers); // المخرج: [1, 3, 5]
مشكلة التعديل المتزامن (Fail-Fast): إذا حاولت تعديل مجموعة (إضافة/حذف) داخل حلقة for عادية أو محسنة، فستطلق Java استثناء ConcurrentModificationException. دالة Iterator.remove() هي الطريقة الآمنة لتعديل المجموعة أثناء التكرار.