ArrayList في Java
أنشئ ArrayList<String> باسم tags، ثم استدعِ tags.add("oak"); وبعدها tags.add("pine");، واطبع القائمة بـ System.out.println(tags);. ترجم Shelf.java ونفّذ java Shelf. يجب أن تظهر الشاشة سطرًا واحدًا: [oak, pine]. الأقواس المربعة والفاصلة من طباعة Java للقائمة. تكبر القائمة بـ add. تلك القائمة النامية بعد الاستيراد هي ما تعلّمه هذه الصفحة.
قائمة يمكن أن تنمو
على صفحة المصفوفات كان String[] يحتفظ بعدد ثابت من الخانات داخل الأقواس المعقوفة. لا تستطيع استدعاء add على تلك المصفوفة. ArrayList حامل مختلف. تنشئه فارغًا ثم تدفع القيم بـ add. كل add يكبّر القائمة بواحد. سطر الطباعة يعرض كل القيم المخزّنة حاليًا داخل أقواس مربعة مفصولة بفواصل ومسافات.
افتح Shelf.java. أبقِ اسم الفئة العامة Shelf ليطابق اسم الملف. احذف بقايا import kit.Bell; وBell.ring(); وpackage kit; وأي استدعاء لـ Porch أو Lobby من الصفحات السابقة. تلك تخص قصة وحدة Classes. هذه الصفحة تفتح Collections. احذف أيضًا أي Scanner أو nextLine أو قراءة من لوحة المفاتيح. يجب ألا ينتظر البرنامج الكتابة.
قرب أعلى Shelf.java، فوق public class Shelf، اكتب:
import java.util.ArrayList;
هذا الاستيراد يجلب نوع ArrayList إلى الاسم القصير كما جلب import kit.Bell; اسم Bell في صفحة الاستيراد. بلا هذا السطر لا يرى javac الاسم القصير ArrayList في هذه الصفحة. اكتب حزمة java.util والفئة ArrayList بدقة. لا تجعل import java.util.*; مطلبًا هنا — استيراد واحد دقيق يكفي.
داخل main أنشئ القائمة:
ArrayList<String> tags = new ArrayList<String>();
الأقواس الزاوية تحمل String لأن هذا الدرس يخزّن كلمات. الاسم tags اكتبه كما في الملف المحفوظ. استدعاء new ArrayList<String>() يبني كائن قائمة فارغة. في هذه اللحظة القائمة تحمل صفر قيم. طباعتها الآن تظهر []، لكن الملف المحفوظ يضيف كلمات قبل الطباعة.
أضف oak ثم pine ثم اطبع
استدعِ tags.add("oak"); في سطره. ثم استدعِ tags.add("pine"); في السطر التالي. كل استدعاء يخزّن كلمة بين علامتي اقتباس. الترتيب مهم للشاشة: oak أولًا ثم pine. لا تبدّلهما في الملف المحفوظ. لا تضف كلمة ثالثة في ملف التدريس لهذه الصفحة — إضافتان كافيتان لرؤية النمو وشكل الطباعة.
ثم اكتب:
System.out.println(tags);
مرّر اسم القائمة نفسه. لا تضع علامات اقتباس حول tags. لا تكتب System.out.println("oak"); يدويًا كمسار الدرس — الفكرة أن كائن القائمة يحمل الكلمتين ويطبعهما معًا. احفظ الملف قبل الترجمة.
import java.util.ArrayList;
public class Shelf {
public static void main(String[] args) {
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
System.out.println(tags);
}
}
من المجلد الذي يحوي Shelf.java نفّذ javac Shelf.java. عندما تتطابق الأقواس والدعامات والأقواس الزاوية والفواصل المنقوطة، لا يكتب javac سطرًا من عنده. ثم نفّذ java Shelf — لا java Shelf.java ولا java ArrayList. احذف نهاية .java من أمر التشغيل. ابدأ الفئة التي تحمل main.
يجب أن يطبع البرنامج سطرًا ويتوقف: [oak, pine]. لا يطلب منك الكتابة. إذا انتظرت الطرفية إدخال لوحة المفاتيح، فما زال استدعاء nextLine من تمرين أقدم في أحد الملفات. احذف ذلك الاستدعاء وأبقِ إنشاء ArrayList وسطري add وSystem.out.println(tags);.
امشِ التشغيل مرة. تبدأ Java من Shelf.main. الاستيراد سمّى أي ArrayList تقصد. سطر new يبني قائمة فارغة. أول add يخزّن oak. ثاني add يخزّن pine. سطر الطباعة يطلب من القائمة عرض محتواها. تظهر الشاشة [oak, pine]. لا يجب أن يطبع شيء آخر. إذا رأيت ding أو 9 أو ok فما زلت تشغّل برنامج Porch أو Lobby أو Pier أو Yard قديمًا. انتقل إلى java Shelf.
إذا قال javac إنه لا يجد ArrayList، فسطر الاستيراد ناقص أو مكتوب خطأ أو موضوع بعد public class Shelf. انقل import java.util.ArrayList; فوق سطر الفئة. إذا كتبت tags.add(oak); بلا اقتباس، يعامل javac كلمة oak كاسم غير موجود. أبقِ الاقتباس حول كل كلمة. إذا كتبت String[] tags = new ArrayList<String>(); تختلف الأنواع ويرفض javac — أبقِ ArrayList<String> على جانبي سطر الإنشاء في هذه الصفحة.
مصفوفة ثابتة بجانب القائمة النامية
تباين قصير يبقي صفحة المصفوفات في البال دون خلطها بتشغيل التدريس. String[] ثابت ما زال يعمل. لا ينمو بـ add.
public class Shelf {
public static void main(String[] args) {
String[] trees = {"oak", "pine"};
System.out.println(trees[0]);
}
}
ترجم ونفّذ ذلك التباين فقط لتذكّر الشكل الثابت. تظهر الشاشة oak — خانة واحدة — لا [oak, pine]. لا يوجد استدعاء add. لتخزين كلمة ثالثة في مصفوفة ثابتة تحتاج مصفوفة جديدة بثلاث خانات. ملف تدريس ArrayList هو الذي يحمل import java.util.ArrayList; وإضافتيْن وSystem.out.println(tags);. استخدم ملف المصفوفة الثابتة تذكيرًا فقط لا مسار الاختبار. لا تخلط trees.add("elm") في ذلك التباين — String[] بلا add، ويرفض javac.
جنبًا إلى جنب
جدول قصير يبقي الفرق واضحًا.
📊 ArrayList vs String array
| Piece | On this page |
|---|---|
| create | ArrayList<String> tags = new ArrayList<String>(); |
| grow | tags.add("oak"); then tags.add("pine"); |
| print list | System.out.println(tags); → [oak, pine] |
| fixed array | String[] trees = {"oak", "pine"}; — no add |
الجدول تذكير فقط. القطع التي تبقيها لملف الدرس هي الاستيراد وسطر إنشاء ArrayList وإضافتا add وطباعة tags. |
مقارنة مع الاستيراد ومع المصفوفات
في صفحة الاستيراد استدعى Porch الدالة Bell.ring(); بعد import kit.Bell;. ذلك ما زال صالحًا كتاريخ. هذه الصفحة تغيّر الدور إلى Shelf والاستيراد إلى java.util.ArrayList. بقايا Bell.ring(); درس آخر. لهذه الصفحة أبقِ ArrayList<String> tags وسطري add وطباعة القائمة.
في صفحة المصفوفات ملأت الأقواس المعقوفة String[] ثابتًا. ذلك ما زال يعمل لحجم معروف. هذا الدرس يختار ArrayList لترى النمو بـ add وطباعة القائمة كاملة مرة واحدة. لا تخلط plants[0] وtags.add("oak") في نفس عرض Shelf هنا. مسار واحد واضح يكفي: استيراد، إنشاء، add، add، طباعة.
عندما تحتاج لاحقًا إلى get أو size أو remove، تغطي الصفحة التالية — دوال list — تلك الاستدعاءات. ابقَ هنا مع add وطباعة القائمة كاملة. لا تجعل حلقة على القائمة مطلبًا في هذه الصفحة؛ طباعة كائن القائمة تكفي لرؤية الكلمتين.
ما يبقى لدوال list
تفتح هذه الصفحة Collections بقائمة يمكن أن تنمو. الصفحة التالية تعمل استدعاءات القائمة الشائعة مثل قراءة خانة أو السؤال عن عدد القيم. ابقَ هنا مع add وطباعة القائمة كاملة. لا تجعل tags.get(0) مطلبًا هنا إلا إن كنت تعرفه؛ هدف الدرس القائمة النامية وشاشة [oak, pine].
عندما تبقى ملفات Porch.java أو Lobby.java القديمة قريبة، اتركها أو احذفها فقط إن شوّشت أمر التشغيل. نفّذ java Shelf بعد ترجمة ملف ArrayList لهذا الدرس.
قبل دوال list
يمكنك استيراد java.util.ArrayList، وإنشاء ArrayList<String> tags، واستدعاء tags.add("oak"); وtags.add("pine");، ثم طباعة tags. ترجم Shelf.java ونفّذ java Shelf. تظهر الشاشة [oak, pine]. نمت القائمة بـ add. الصفحة التالية دوال list، حيث تصل إلى قيمة واحدة أو تسأل القائمة عن طولها.
أبقِ الاستيراد فوق الفئة. أبقِ إضافتيْ add قبل الطباعة. أبقِ تشغيل java Shelf لهذا الدرس. تلك العادات الثلاث نقطة تفتيش هذه الصفحة قبل المتابعة. عندما تظهر الشاشة [oak, pine] بعد الإضافتين، أدّى ArrayList عمله لهذا الدرس وأنت جاهز للموضوع التالي.
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى