logo

التكرار في جافا

يعد Iterator في Java أحد الأكثر استخدامًا المؤشرات في Java Collections Framework . يتم استخدامه لاجتياز أو تكرار عناصر المجموعة واحدًا تلو الآخر.

  • يتم استخدامه لاجتياز العناصر في الاتجاه الأمامي فقط.
  • يزيل العناصر بأمان أثناء الاجتياز باستخدام الإزالة ().
  • Iterator هو مؤشر عالمي ينطبق على جميع أنواع المجموعات - مجموعة القائمة وقائمة الانتظار.

إعلان التكرار

مكرر الواجهة العامة

يمثل E هنا نوع العناصر التي سيتم التكرار عليها.



إنشاء كائن التكرار

يتم إنشاء كائن Iterator عن طريق استدعاء الأسلوب iterator() على كائن مجموعة. هنا سوف نستخدم Iterator لاجتياز وطباعة كل عنصر في ملف ArrayList .

مجموعةالأسماء = قائمة ArrayList الجديدة<>()؛
مكررitr =names.iterator();

Java
import java.util.ArrayList; import java.util.Iterator; public class Geeks {  public static void main(String[] args) {    // Create an ArrayList and add some elements  ArrayList<String> al = new ArrayList<>();  al.add('A');  al.add('B');  al.add('C');  // Obtain an iterator for the ArrayList  Iterator<String> it = al.iterator();  // Iterate through the elements and print each one  while (it.hasNext()) {    // Get the next element  String n = it.next();   System.out.println(n);   }  } } 

الإخراج
A B C 

التسلسل الهرمي للتكرار

التكرار هو جزء من حزمة java.util ويتم تنفيذه بواسطة جميع فئات المجموعة من خلال واجهاتها الفرعية.

إرجاع مصفوفة Java
listiterator_extends_iterator_' title=مكرر المؤشر

طرق واجهة التكرار

تحدد واجهة التكرار ثلاث طرق كما هو موضح أدناه:

  • التالي (): يُرجع صحيحًا إذا كان التكرار يحتوي على المزيد من العناصر.
  • التالي(): إرجاع العنصر التالي في التكرار. يرمي NoSuchElementException إذا لم يكن هناك المزيد من العناصر.
  • يزيل(): يزيل العنصر الأخير الذي تم إرجاعه بواسطة التالي (). يمكن استدعاء هذه الطريقة مرة واحدة فقط لكل مكالمة إلى next().

ملحوظة : يمكن لطريقة الإزالة () طرح استثناءين، وهما كما يلي:

العمل الداخلي

سنحاول في هذا القسم فهم كيفية عمل Java Iterator وأساليبه داخليًا. دعونا نأخذ كائن LinkedList التالي لفهم هذه الوظيفة.

العاب imessage مع الاندرويد

الخطوة 1: الآن دعونا نقوم بإنشاء كائن Iterator على كائن القائمة كما هو موضح أدناه:

مكررcityIterator = city.iterator();

سيبدو مكرر "citiesIteartor" كما يلي:

مكرر جافا الخطوة 1' loading='lazy' title=الخطوة 1

يشير مؤشر التكرار هنا إلى العنصر الأول في القائمة.

الخطوة 2: الآن سوف نقوم بتشغيل مقتطف التعليمات البرمجية التالي.

cityIterator.hasNext();
cityIterator.next();

مكرر جافا الخطوة 2' loading='lazy' title=الخطوة 2

عندما نقوم بتشغيل مقتطف التعليمات البرمجية أعلاه، يشير مؤشر Iterator إلى العنصر الأول في القائمة كما هو موضح في الرسم البياني أعلاه.

الخطوة 3: الآن سوف نقوم بتشغيل مقتطف التعليمات البرمجية التالي.

الذئب أو الثعلب

cityIterator.hasNext();
cityIterator.next();

مكرر جافا الخطوة 3' loading='lazy' title=الخطوة 3


عندما نقوم بتشغيل مقتطف التعليمات البرمجية أعلاه، يشير مؤشر Iterator إلى العنصر الثاني في القائمة كما هو موضح في الرسم البياني أعلاه.

هاشما جافا

الخطوة 4: قم بهذه العملية للوصول بمؤشر التكرار إلى العنصر النهائي في القائمة.

Java Iterator Step n' loading='lazy' title=الخطوة 4

الخطوة 5: بعد قراءة العنصر الأخير، إذا قمنا بتشغيل مقتطف الشفرة أدناه، فسوف يُرجع قيمة خاطئة.

cityIterator.hasNext();

Java Iterator في النهاية' loading='lazy' title=

كما يشير مؤشر التكرار إلى ما بعد العنصر الأخير من القائمة التالي () الطريقة ترجع قيمة خاطئة.

ملحوظة: يدعم Java Iterator تكرار الاتجاه الأمامي فقط، لذلك يُعرف بالمؤشر أحادي الاتجاه. في المقابل، يعد ListIterator ثنائي الاتجاه مما يسمح بالاجتياز في كلا الاتجاهين.

جافا-إلتيراتور-6' loading='lazy' title=مكرر جافا: الاتجاه إلى الأمام

مثال: سنستخدم هنا Iterator لاجتياز وإزالة العناصر الفردية من ArrayList.

Java
import java.util.ArrayList; import java.util.Iterator; public class Geeks {  public static void main(String[] args) {    // Creating an ArrayList of Integer type  ArrayList<Integer> al = new ArrayList<>();  // Adding elements to the ArrayList  for (int i = 0; i < 10; i++) {  al.add(i);  }  // Printing the original list  System.out.println('Original List: ' + al);  // Creating an Iterator for the ArrayList  Iterator<Integer> itr = al.iterator();  // Iterating through the list and removing odd elements  while (itr.hasNext()) {    // Getting the next element  int i = itr.next();     System.out.print(i + ' ');   // Removing odd elements  if (i % 2 != 0) {  itr.remove();  }  }  System.out.println();  // Printing the modified list after removal of odd elements  System.out.println('Modified List: ' + al);  } } 

الإخراج
Original List: [0 1 2 3 4 5 6 7 8 9] 0 1 2 3 4 5 6 7 8 9 Modified List: [0 2 4 6 8] 

توضيح: في المثال أعلاه، قمنا بإنشاء قائمة ArrayList من الأعداد الصحيحة ثم قمنا بالتكرار من خلالها باستخدام Iterator وإزالة جميع الأرقام الفردية. يقوم بطباعة القائمة قبل وبعد إزالة العناصر الفردية وطباعة القائمة المعدلة بالأرقام الزوجية فقط.