مقدمة
في الدرس السابق تعرفنا على Generics، وعرفنا كيف تساعدنا على كتابة كود مرن وآمن للأنواع.
لكن عند التعامل مع List وSet وغيرها من Collections، نحتاج إلى طريقة منظمة للتنقل بين العناصر.
وهنا يأتي دور Iterator.
---
ما هو Iterator؟
الـ Iterator هو كائن يسمح لنا بالمرور على عناصر مجموعة من البيانات عنصرًا بعد عنصر.
وهو يوفر طريقة موحدة للتنقل بين عناصر أنواع مختلفة من Collections.
---
لماذا نستخدم Iterator؟
يمكن استخدام Iterator من أجل:
المرور على العناصر
قراءة البيانات
البحث عن عناصر معينة
حذف عناصر أثناء عملية المرور بطريقة مناسبة
---
أهم الدوال
من أهم الدوال التي يوفرها Iterator:
hasNext()
تتحقق مما إذا كان هناك عنصر آخر يمكن الوصول إليه.
next()
تنتقل إلى العنصر التالي وتعيد قيمته.
remove()
يمكن استخدامها لحذف العنصر الذي تمت زيارته، وفقًا لقواعد Iterator.
---
Iterator مع Collections
يمكن استخدام Iterator مع العديد من أنواع Collections، مثل:
ArrayList
LinkedList
HashSet
وغيرها من المجموعات التي تدعم آلية التكرار
وهذا يجعل طريقة التنقل أكثر توحيدًا.
---
Iterator وfor-each
يمكن استخدام حلقة for-each للمرور على العناصر بطريقة أبسط في كثير من الحالات.
لكن Iterator يكون مفيدًا عندما نحتاج إلى تحكم أكبر في عملية المرور، خصوصًا عند الحاجة إلى حذف عناصر أثناء التكرار بطريقة صحيحة.
---
حذف العناصر باستخدام Iterator
حذف عنصر من Collection أثناء المرور عليها بطريقة غير صحيحة قد يؤدي إلى مشاكل.
لذلك يوفر Iterator طريقة مخصصة لحذف العنصر الحالي أثناء عملية التكرار.
وهذا يجعل العملية أكثر أمانًا من بعض طرق الحذف المباشر أثناء التكرار.
---
ListIterator
توفر Java أيضًا نوعًا أكثر تخصصًا يسمى ListIterator.
يعمل مع القوائم List ويوفر إمكانيات إضافية، مثل التنقل إلى الأمام والخلف والتعامل مع عناصر القائمة بمرونة أكبر.
---
استخدام Iterators في المشاريع
تستخدم Iterators عند التعامل مع مجموعات البيانات في:
تطبيقات الهواتف
الألعاب
الأنظمة الإدارية
التطبيقات المكتبية
المشاريع الكبيرة
---
فوائد Iterator
من أهم فوائده:
طريقة موحدة للتنقل بين العناصر
دعم أنواع متعددة من Collections
إمكانية حذف العناصر بطريقة منظمة
فصل طريقة المرور عن نوع المجموعة
---
أخطاء شائعة عند المبتدئين
من الأخطاء الشائعة:
استدعاء next() دون التأكد من وجود عنصر آخر
حذف العناصر مباشرة أثناء التكرار بطريقة غير صحيحة
الخلط بين Iterator والعنصر نفسه
استخدام Iterator عندما تكون for-each أبسط وأكثر وضوحًا
---
ملخص الدرس
تعرفنا في هذا الدرس على Iterator في Java، وعرفنا كيف يساعدنا على التنقل بين عناصر Collections، كما تعرفنا على hasNext() وnext() وremove()، وتعرفنا أيضًا على ListIterator.
في الدرس السابع والثلاثون سنتعرف على Lambda Expressions في Java، وسنفهم كيف يمكن كتابة وظائف صغيرة بطريقة مختصرة واستخدامها مع Collections.



