logo

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

في جافا، ان مكرر هو أحد مؤشرات جافا. مكرر جافا هي واجهة يتم ممارستها من أجل تكرار مجموعة من مكونات كائنات Java بالكامل واحدًا تلو الآخر. إنه مجاني للاستخدام في لغة برمجة Java منذ إطار عمل Java 1.2 Collection. إنه ينتمي إلى حزمة java.util.

على الرغم من تقديم Java Iterator في Java 1.2، إلا أنها لا تزال ليست أقدم أداة متاحة للتنقل عبر عناصر كائن المجموعة. أقدم مكرر في لغة برمجة Java هو Enumerator الذي سبق Iterator. تحل واجهة Java Iterator محل مكرر العداد الذي تم ممارسته في البداية لاجتياز بعض المجموعات التي يمكن الوصول إليها مثل ArrayLists.

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

مزايا برنامج Java Iterator

أصبح Iterator في Java منتشرًا جدًا نظرًا لمزاياه العديدة. يتم إعطاء مزايا Java Iterator على النحو التالي -

  • يمكن للمستخدم تطبيق هذه التكرارات على أي فئة من فئات إطار عمل المجموعة.
  • في Java Iterator، يمكننا استخدام كل من عمليتي القراءة والإزالة.
  • إذا كان المستخدم يعمل مع حلقة for، فلن يتمكن من تحديث (إضافة/إزالة) المجموعة، بينما إذا استخدم Java Iterator، فيمكنه ببساطة تحديث المجموعة.
  • يعتبر Java Iterator هو المؤشر العالمي لواجهة برمجة تطبيقات المجموعة.
  • أسماء الطرق في Java Iterator سهلة للغاية وسهلة الاستخدام للغاية.

عيوب برنامج Java Iterator

على الرغم من المزايا العديدة، فإن Java Iterator له عيوب مختلفة أيضًا. عيوب Java Iterator موضحة أدناه -

  • يحافظ Java Iterator على التكرار في الاتجاه الأمامي فقط. بكلمات بسيطة، Java Iterator هو مكرر أحادي الاتجاه.
  • لم تتم الموافقة على استبدال وتوسيع مكون جديد بواسطة Java Iterator.
  • في عمليات CRUD، لا يحتفظ Java Iterator بالعمليات المختلفة مثل CREATE وUPDATE.
  • بالمقارنة مع Spliterator، لا يدعم Java Iterator اجتياز العناصر في النمط المتوازي مما يعني أن Java Iterator يدعم التكرار المتسلسل فقط.
  • بالمقارنة مع Spliterator، لا يدعم Java Iterator تنفيذًا أكثر موثوقية لاجتياز الحجم الكبير من البيانات.

كيفية استخدام Java Iterator؟

عندما يحتاج المستخدم إلى استخدام Java Iterator، فمن الضروري بالنسبة له إنشاء مثيل لواجهة Iterator من مجموعة الكائنات التي يرغب في اجتيازها. بعد ذلك، يحافظ المُكرِّر المستلم على مسار المكونات في المجموعة الأساسية للتأكد من أن المستخدم سوف يجتاز كل عنصر من عناصر مجموعة الكائنات.

إذا قام المستخدم بتعديل المجموعة الأساسية أثناء المرور عبر Iterator المؤدي إلى تلك المجموعة، فسوف يتعرف عليه Iterator عادةً وسيطرح استثناءً في المرة التالية عندما يحاول المستخدم الحصول على المكون التالي من Iterator.

طرق مكرر جافا

يعرض الشكل التالي الرسم التخطيطي لفئة واجهة Java Iterator بشكل مثالي. يحتوي على إجمالي أربع طرق هي:

  • التالي ()
  • التالي()
  • يزيل()
  • forEachRemaining()

ال forEachRemaining() تمت إضافة الطريقة في Java 8. دعونا نناقش كل طريقة بالتفصيل.

    المنطقية hasNext(): الطريقة لا تقبل أي معلمة. يُرجع صحيحًا إذا كان هناك المزيد من العناصر المتبقية في التكرار. إذا لم يكن هناك المزيد من العناصر المتبقية، فسوف يعود خطأ.
    إذا لم يكن هناك المزيد من العناصر المتبقية في التكرار، فليست هناك حاجة لاستدعاء الأسلوب التالي (). بكلمات بسيطة، يمكننا القول أن الطريقة تُستخدم لتحديد ما إذا كان سيتم استدعاء الطريقة التالية () أم لا.ه التالي ():إنه مشابه لطريقة hasNext(). كما أنه لا يقبل أي معلمة. تقوم بإرجاع E، أي العنصر التالي في الاجتياز. إذا لم يكن لدى التكرار أو مجموعة الكائنات المزيد من العناصر للتكرار، فسيتم طرح NoSuchElementException.إزالة الفراغ الافتراضي ():هذه الطريقة أيضًا لا تتطلب أي معلمات. لا يوجد نوع إرجاع لهذه الطريقة. تتمثل الوظيفة الرئيسية لهذه الطريقة في إزالة العنصر الأخير الذي تم إرجاعه بواسطة المكرر الذي يمر عبر المجموعة الأساسية. لا يمكن طلب طريقة الإزالة () إلا مرة واحدة تقريبًا في استدعاء الطريقة () التالي. إذا كان المكرِّر لا يدعم عملية الإزالة، فسيطرح UnSupportedOperationException. كما أنه يطرح IllegalStateException إذا لم يتم استدعاء الطريقة التالية بعد.الفراغ الافتراضي forEachRemaining (إجراء المستهلك):إنها الطريقة الوحيدة لـ Java Iterator التي تأخذ معلمة. يقبل الإجراء كمعلمة. وما العمل إلا ما يجب القيام به. لا يوجد نوع إرجاع للطريقة. تقوم هذه الطريقة بتنفيذ العملية المحددة على جميع المكونات اليسرى للمجموعة حتى يتم استهلاك جميع المكونات أو يلقي الإجراء استثناءً. يتم تسليم الاستثناءات التي تم طرحها عن طريق الإجراء إلى المتصل. إذا كان الإجراء فارغًا، فإنه يطرح NullPointerException.

مثال على برنامج Java Iterator

حان الآن وقت تنفيذ برنامج Java لتوضيح ميزة واجهة Java Iterator. ينتج الكود أدناه قائمة ArrayList لأسماء المدن. ثم نقوم بتهيئة مكرر بتطبيق طريقة المكرر () في ArrayList. بعد ذلك، يتم اجتياز القائمة لتمثيل كل عنصر.

JavaIteratorExample.java

 import java.io.*; import java.util.*; public class JavaIteratorExample { public static void main(String[] args) { ArrayList cityNames = new ArrayList(); cityNames.add('Delhi'); cityNames.add('Mumbai'); cityNames.add('Kolkata'); cityNames.add('Chandigarh'); cityNames.add('Noida'); // Iterator to iterate the cityNames Iterator iterator = cityNames.iterator(); System.out.println('CityNames elements : '); while (iterator.hasNext()) System.out.print(iterator.next() + ' '); System.out.println(); } } 

انتاج:

 CityNames elements: Delhi Mumbai Kolkata Chandigarh Noida 

نقطة لنتذكر

  • Java Iterator عبارة عن واجهة تمت إضافتها في لغة برمجة Java في إطار عمل Java 1.2 Collection. إنه ينتمي إلى حزمة java.util.
  • إنه أحد مؤشرات Java التي يتم ممارستها لاجتياز كائنات إطار عمل المجموعة.
  • يتم استخدام Java Iterator لتكرار مكونات كائن المجموعة واحدًا تلو الآخر.
  • يُعرف Java Iterator أيضًا باسم المؤشر العالمي لـ Java لأنه مناسب لجميع فئات إطار عمل المجموعة.
  • يدعم Java Iterator أيضًا عمليات مثل القراءة والإزالة.
  • أسماء الأساليب لفئة Iterator بسيطة للغاية وسهلة الاستخدام مقارنة بأسماء الأساليب الخاصة بـ Enumeration Iterator.