0Pricing
Java Academy · درس

Iterators وحلقة for المحسّنة

تنقّل عبر المجموعات باستخدام Iterator وحلقة for المحسّنة. تعلّم الحذف الآمن أثناء التكرار والأخطاء الشائعة.

Iterators وحلقة for المحسّنة درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 3 دروس في المجموع.

نظرة عامة

يمنحكم Iterator تحكمًا خطوة بخطوة أثناء المرور عبر مجموعة. وتكون حلقة Enhanced for (for-each) أقصر وأنسب لقراءة العناصر. استخدموا Iterator عند الحاجة إلى الحذف بأمان أثناء المرور.

Iterator أم for-each

  • Iterator: استخدموه عندما قد تحذفون عناصر أو تحتاجون إلى تحكم دقيق.
  • Enhanced for: الأفضل للحلقات التي تقرأ العناصر فقط.
  • لا تعدّلوا بنية المجموعة داخل Enhanced for مطلقًا.

الشفرة: Iterator الأساسي

يستخدم Iterator الدالتين hasNext() وnext(). وينتقل كل استدعاء لـ next() إلى الأمام ويعيد العنصر.

public class Main {
  public static void main(String[] args) {
    java.util.List<String> names = new java.util.ArrayList<>();
    names.add("Ada"); names.add("Bob"); names.add("Cyd");

    java.util.Iterator<String> it = names.iterator();
    while (it.hasNext()) {
      String s = it.next();
      System.out.println(s);
    }
  }
}

مشكلة شائعة

مشكلة شائعة: يؤدي الحذف مباشرةً داخل حلقة Enhanced for غالبًا إلى طرح ConcurrentModificationException. استخدموا Iterator لإجراء التغييرات البنيوية بأمان.

الشفرة: الحذف الآمن

الحذف الآمن: استدعوا remove() على Iterator مباشرةً بعد next() عند العثور على تطابق.

public class Main {
  public static void main(String[] args) {
    java.util.List<String> words = new java.util.ArrayList<>();
    words.add("to"); words.add("be"); words.add("or"); words.add("not");

    java.util.Iterator<String> it = words.iterator();
    while (it.hasNext()) {
      String w = it.next();
      if (w.length() <= 2) {
        it.remove(); // safe removal
      }
    }
    System.out.println(words); // [not]
  }
}

الشفرة: Enhanced for وforEach

تُعد Enhanced for مناسبة لقراءة العناصر بوضوح. كما أن استخدام forEach مع lambda أسلوب مختصر آخر (في Java 8 والإصدارات الأحدث).

public class Main {
  public static void main(String[] args) {
    java.util.Set<String> tags = new java.util.HashSet<>();
    tags.add("java"); tags.add("collections"); tags.add("oop");

    // enhanced for: read-only
    for (String t : tags) {
      System.out.print("[" + t + "]");
    }
    System.out.println();

    // Java 8+ forEach
    tags.forEach(t -> System.out.println("tag=" + t));
  }
}

تحقق من الحذف باستخدام Iterator

تحقق سريع: كيف تحذفون العناصر بأمان أثناء التكرار على List؟

مراجعة

مراجعة: استخدموا Enhanced for للقراءة البسيطة، واستخدموا Iterator عند ضرورة حذف العناصر أثناء المرور. فهذا يمنع أخطاء وقت التشغيل.

الأسئلة الشائعة

هل درس «Iterators وحلقة for المحسّنة» مجاني؟

نعم — نص درس «Iterators وحلقة for المحسّنة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 3 دروس في المجموع.

ماذا ستتعلم في «Iterators وحلقة for المحسّنة»؟

تنقّل عبر المجموعات باستخدام Iterator وحلقة for المحسّنة. تعلّم الحذف الآمن أثناء التكرار والأخطاء الشائعة. تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟

لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.

كم من الوقت يستغرق درس «Iterators وحلقة for المحسّنة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟

نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. نظرة عامة على List وSet
  2. Iterators وحلقة for المحسّنة
  3. أدوات Collections
← العودة إلى Java Academy