جاري التحميل...

التكرار في Java

أنشئ ArrayList<String> باسم tags، أضِف oak ثم pine، وامشِ على القائمة بـ for (String t : tags) مع طباعة كل كلمة. ترجم Lane.java ونفّذ java Lane. يجب أن تظهر الشاشة سطرين: oak، ثم pine. كل دورة من الحلقة تطبع قيمة واحدة. المشي على كل قيمة في المجموعة هو ما تعلّمه هذه الصفحة.

امشِ على كل قيمة مرة واحدة

في صفحة HashSet كنت تفحص size وcontains بلا حلقة. في صفحة for-each الأسبق في المسار مشيت على مصفوفة ثابتة. هذه الصفحة تمشي على ArrayList بنفس شكل for-each، ثم تُظهر مشيًا مفهرسًا بـ get. المجموعة تكبر أولًا بـ add. الحلقة تأتي بعد تخزين القيم.
افتح Lane.java. أبقِ اسم الفئة العامة Lane ليطابق اسم الملف. احذف بقايا عروض HashSet وcontains وBin وDesk وput/get الخاصة بالخريطة. احذف أيضًا أي Scanner أو nextLine. يجب ألا ينتظر البرنامج الكتابة.
قرب الأعلى، فوق public class Lane، اكتب:
import java.util.ArrayList;
داخل main أنشئ القائمة وأضِف كلمتين:
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
ثم اكتب رأس for-each وجسمه:
for (String t : tags) { System.out.println(t); }
النقطتان تقفان بين نوع-واسم العنصر والمجموعة. كل دورة تضع t على الكلمة التالية. لا تكتب عدّادًا في العرض الأول. احفظ قبل الترجمة.

Lane for-each ArrayList

java
import java.util.ArrayList;

public class Lane {
    public static void main(String[] args) {
        ArrayList<String> tags = new ArrayList<String>();
        tags.add("oak");
        tags.add("pine");
        for (String t : tags) {
            System.out.println(t);
        }
    }
}

من المجلد الذي يحوي Lane.java نفّذ javac Lane.java. عندما تتطابق الأقواس والدعامات والأقواس الزاوية والنقطتان والفواصل المنقوطة، لا يكتب javac سطرًا من عنده. ثم نفّذ java Lane — لا java Lane.java ولا java ArrayList. احذف نهاية .java من أمر التشغيل.
يجب أن يطبع البرنامج سطرين ويتوقف: oak، ثم pine. لا يطلب منك الكتابة. إذا انتظر الطرفية إدخال لوحة المفاتيح، ما زال استدعاء nextLine من تمرين قديم في ملف. احذف ذلك الاستدعاء وأبقِ الإنشاء وسطري add والـ for-each.
امشِ التنفيذ مرة واحدة. تبدأ Java من Lane.main. القائمة تحمل oak ثم pine. الدورة الأولى تضع t على oak وتطبع oak. الدورة الثانية تضع t على pine وتطبع pine. ثم تنتهي الحلقة. لا شيء آخر يجب أن يُطبع. إذا رأيت 2 فقط، فقد طبعت size() بدل المشي على القيم. إذا رأيت سطرًا واحدًا [oak, pine]، فقد طبعت كائن القائمة كله بدل كل عنصر — أبقِ جسم for-each كـ println(t). إذا رأيت true أو leaf، فما زال عرض Bin أو Desk يعمل — انتقل إلى java Lane.
إذا قال javac إنه لا يجد ArrayList، فالاستيراد ناقص أو جاء بعد سطر الفئة. انقل import java.util.ArrayList; فوق public class Lane. إذا كتبت for (String t : tags) بلا دعامات ثم أكثر من سطر جسم لاحقًا، أبقِ جسم هذه الصفحة println واحدًا داخل دعامات ليبقى الشكل واضحًا. إملاء اسم المجموعة بعد النقطتين يجب أن يطابق القائمة التي أنشأتها: tags، لا اسم slots المتبقي من صفحة for-each على المصفوفة.

مشي مفهرس مع get

عرض ثانٍ يمشي على نفس القائمة بـ for معدود وget. ترى مسار رقم الخانة بجانب مسار for-each.

Lane indexed get walk

java
import java.util.ArrayList;

public class Lane {
    public static void main(String[] args) {
        ArrayList<String> tags = new ArrayList<String>();
        tags.add("oak");
        tags.add("pine");
        for (int i = 0; i < tags.size(); i++) {
            System.out.println(tags.get(i));
        }
    }
}

ترجم ونفّذ بنفس الطريقة. الشاشة تظهر مجددًا oak ثم pine. الرأس يستخدم i من 0 طالما i < tags.size(). كل استدعاء جسم tags.get(i) يقرأ خانة واحدة. هذه عادة get من صفحة list-methods داخل حلقة. فضّل ملف for-each كمسار التدريس الأول عندما لا تحتاج رقم الفهرس على الشاشة. أبقِ الملف المفهرس لإثبات أن كلا المشيين يطبعان نفس السطرين لهذه القائمة. إذا بدأت i من 1 بالخطأ، تكون أول كلمة مطبوعة pine ويُتخطى oak — أبقِ i عند 0 للمشي الكامل.
لا تعتمد على ترتيب طباعة HashSet لشاشة اختبار هذه الصفحة. المجموعات لا تعد بوعد oak قبل pine. عروض ArrayList تبقي ترتيبًا ثابتًا للسطرين اللذين تتوقعهما. ابقَ مع ArrayList لملفات التدريس حتى تبقى شاشة الاختبار قابلة للتوقع.

الحجم وحده ليس مشيًا

ملف ثالث يُظهر عادة طباعة العدّ فقط. كانت مفيدة في صفحة HashSet، لكنها ليست iterating.

Lane size only not a walk

java
import java.util.ArrayList;

public class Lane {
    public static void main(String[] args) {
        ArrayList<String> tags = new ArrayList<String>();
        tags.add("oak");
        tags.add("pine");
        System.out.println(tags.size());
    }
}

ذلك الملف يطبع 2 — رقم واحد، لا الكلمات. استخدمه فقط كتباين. ملفات درس iterating المحفوظة تطبع كل قيمة بـ for-each أو بـ get مفهرس. لا تقدّم ملف الحجم فقط كمسار اختبار لشاشة السطرين.

مقارنة مع for-each على المصفوفات وفحوصات HashSet

سابقًا مشى for-each على خانات int[] أو String[]. هنا النقطتان ما زالتا تعملان، لكن الاسم على اليمين هو ArrayList. في صفحة HashSet أجاب size وcontains بلا طباعة كل قيمة. هذه الصفحة تطبع كل قيمة. عرض contains المتبقي من Bin درس آخر. لهذه الصفحة أبقِ Lane مع for-each الذي يطبع oak ثم pine.
عندما تبقى ملفات Bin.java القديمة قريبة، اتركها أو احذفها فقط إذا شوّشت أي فئة تشغّل. نفّذ java Lane بعد ترجمة ملف المشي من هذا الدرس.

ما يبقى للـ wrappers

هذه الصفحة تمشي على قيم المجموعة. الصفحة التالية تغطي أنواع Wrapper مثل Integer بجانب int الأولي عندما تحتاج المجموعات كائنات. ابقَ هنا مع for-each وget المفهرس على ArrayList. لا تفرض عروض wrapper كشرط في هذه الصفحة.

قبل الـ wrappers

يمكنك استيراد java.util.ArrayList، وإضافة oak و pine، وطباعة كل كلمة بـ for (String t : tags). يمكنك أيضًا المشي بـ for (int i = 0; i < tags.size(); i++) وtags.get(i). ترجم Lane.java ونفّذ java Lane. الشاشة تظهر oak ثم pine. الصفحة التالية wrappers، حيث تقف أنواع الكائنات بجانب الأوليات لتخزين المجموعة.
أبقِ الاستيراد. أبقِ الإضافتين قبل الحلقة. أبقِ for-each كالمشي التدريسي الأول. تلك العادات هي نقطة التحقق قبل المتابعة. عندما يُطبع السطران بعد for-each، يكون iterating قد أدى عمله لهذا الدرس وتكون جاهزًا للموضوع التالي.

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
5
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى