موصى به, 2021

اختيار المحرر

الفرق بين Iterator و ListIterator في جاوة

و Iterator و ListIterator هما من بين المؤشرات الثلاثة لجافا. يتم تعريف كل من Iterator و ListIterator من خلال مجموعة الإطار في حزمة J ava.Util . ListIterator هو واجهة الطفل واجهة Iterator. الاختلاف الرئيسي بين Iterator و ListIterator هو أن Iterator يمكن أن يجتاز العناصر الموجودة في المجموعة فقط في اتجاه الأمام بينما ، يمكن لـ ListIterator أن يتجاوز العناصر في مجموعة في كل من الاتجاه الأمامي وكذلك الاتجاه إلى الخلف .

دعونا نناقش بعض الاختلافات أكثر بين 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

  1. الفرق الأساسي بين Iterator و ListIterator هو أن كلاهما مؤشر ، يمكن أن يجتذب Iterator العناصر في مجموعة فقط في اتجاه الأمام. من ناحية أخرى ، يمكن اجتياز ListIterator في كلا الاتجاهين إلى الأمام والخلف.
  2. باستخدام أداة التعديل ، لا يمكنك إضافة أي عنصر إلى مجموعة. ولكن ، باستخدام ListIterator ، يمكنك إضافة عناصر إلى مجموعة.
  3. باستخدام Iterator ، لا يمكنك إزالة عنصر في مجموعة حيث يمكنك إزالة عنصر من مجموعة باستخدام ListIterator.
  4. باستخدام Iterator يمكنك اجتياز جميع المجموعات مثل الخريطة ، والقائمة ، ومجموعة. ولكن ، من خلال ListIteror يمكنك اجتياز قائمة الكائنات المنفذة فقط.
  5. يمكنك استرداد فهرس عنصر باستخدام Iterator. ولكن عندما تكون القائمة متسلسلة وتستند إلى فهرس ، يمكنك استرجاع فهرس لعنصر في استخدام ListIterator.

استنتاج:

يمكنك استخدام ListIterator عندما تضطر إلى اجتياز كائن قائمة بشكل خاص في الاتجاهين الأمامي والخلفي. آخر يمكنك استخدام Iterator لأنه يدعم كل كائنات جمع نوع.

Top