
دعونا نناقش بعض الاختلافات أكثر بين Iterator و ListIterator بمساعدة الرسم البياني للمقارنة المبين أدناه.
رسم بياني للمقارنة
أساس للمقارنة | مكرر | ListIterator |
---|---|---|
الأساسية | يمكن لـ Iterator أن يجتاز العناصر في مجموعة فقط في اتجاه الأمام. | يمكن لـ ListIterator اجتياز العناصر في مجموعة في الأمام بالإضافة إلى الاتجاه إلى الخلف. |
إضافة | يتعذر على Iterator إضافة عناصر إلى مجموعة. | يمكن ListIteror إضافة عناصر إلى مجموعة. |
تعديل | لا يمكن Iterator تعديل العناصر في مجموعة. | يمكن ListIterator تعديل العناصر في مجموعة باستخدام set (). |
ترافيرس | يمكن Iterator اجتياز خريطة وقائمة وتعيين. | يمكن ListIterator اجتياز كائنات القائمة فقط. |
فهرس | ليس لدى Iterator أي طريقة للحصول على فهرس العنصر في مجموعة. | باستخدام ListIterator ، يمكنك الحصول على فهرس العنصر في مجموعة. |
تعريف Iterator
Iterator هو واجهة في إطار مجموعة . يتم استخدامه لاجتياز عناصر المجموعة. يتيح لك Iterator تكرار كل عنصر في المجموعة واحدة تلو الأخرى ، والحصول على عناصر من المجموعة أو إزالة عناصر من المجموعة. يمكنك ملاحظة أنه لا يمكنك تعديل أي عنصر في مجموعة باستخدام Iterator.
يحتوي Iterator على طريقة iterator () التي تقوم بإرجاع المكرر إلى بداية المجموعة. بمجرد حصولك على مكرر إلى بداية مجموعة ثم اجتياز العناصر في المجموعة إنشاء حلقة يستدعي hasNext () في كل مرة يتم تكرار الحلقة. إن hasNext () إذا تم إرجاع true ، فهذا يعني أن العنصر التالي موجود في المجموعة ، وإذا قام بإرجاع false ، فهذا يعني أن جميع العناصر قد تم اجتيازها. ثم داخل الحلقة ، يمكنك الحصول على كل عنصر في المجموعة باستخدام التالي () . ترجع الطريقة () التالية العنصر التالي من المجموعة.
عائق:
باستخدام Iterator يمكنك اجتياز مجموعة في اتجاه الذهاب فقط.
باستخدام Iterator ، لا يمكنك التعامل مع العناصر أو تعديلها في مجموعة.
تعريف ListIterator
ListIterator هو واجهة في إطار مجموعة ، ويمتد واجهة Iterator . باستخدام ListIterator ، يمكنك اجتياز عناصر المجموعة في الاتجاهين الأمامي والخلفي. يمكنك أيضًا إضافة أو إزالة أو تعديل أي عنصر في المجموعة. باختصار ، يمكننا القول أنه يزيل عيوب Iterator.
طرق ListIterator هي على النحو التالي:
hasNext () : إذا كان الإرجاع true يؤكد وجود المزيد من العناصر في مجموعة.
next () : إرجاع العناصر التالية من القائمة.
nextIndex () : إرجاع فهرس العناصر التالية في القائمة.
hasPrevious () : إرجاع true إذا كانت هناك عناصر في الاتجاه العكسي في مجموعة.
previous () : لعرض العنصر السابق في مجموعة.
previousIndex () : إرجاع فهرس العنصر السابق في مجموعة.
remove () : حذف العنصر من مجموعة.
set () : تعديل العنصر في مجموعة.
add () : يضيف العنصر الجديد في مجموعة.
الاختلافات الرئيسية بين Iterator و ListIterator
- الفرق الأساسي بين Iterator و ListIterator هو أن كلاهما مؤشر ، يمكن أن يجتذب Iterator العناصر في مجموعة فقط في اتجاه الأمام. من ناحية أخرى ، يمكن اجتياز ListIterator في كلا الاتجاهين إلى الأمام والخلف.
- باستخدام أداة التعديل ، لا يمكنك إضافة أي عنصر إلى مجموعة. ولكن ، باستخدام ListIterator ، يمكنك إضافة عناصر إلى مجموعة.
- باستخدام Iterator ، لا يمكنك إزالة عنصر في مجموعة حيث يمكنك إزالة عنصر من مجموعة باستخدام ListIterator.
- باستخدام Iterator يمكنك اجتياز جميع المجموعات مثل الخريطة ، والقائمة ، ومجموعة. ولكن ، من خلال ListIteror يمكنك اجتياز قائمة الكائنات المنفذة فقط.
- يمكنك استرداد فهرس عنصر باستخدام Iterator. ولكن عندما تكون القائمة متسلسلة وتستند إلى فهرس ، يمكنك استرجاع فهرس لعنصر في استخدام ListIterator.
استنتاج:
يمكنك استخدام ListIterator عندما تضطر إلى اجتياز كائن قائمة بشكل خاص في الاتجاهين الأمامي والخلفي. آخر يمكنك استخدام Iterator لأنه يدعم كل كائنات جمع نوع.