ArrayList: a list that grows · ArrayList: قائمة تنمو
A list that can grow
- An array has a fixed size. Once you make it, the length cannot change.
- An
ArrayListis a list that can grow and shrink while the program runs. - You must import it at the top of the file:
import java.util.ArrayList;.
قائمة قابلة للنمو
- للمصفوفة حجم ثابت. بمجرد إنشائها، لا يمكن تغيير الطول.
- الـ
ArrayListهو قائمة يمكن النمو والتقليص أثناء تشغيل البرنامج. - يجب عليك استيرادها في أعلى الملف:
import java.util.ArrayList;.
Making an ArrayList
- Write the type of the items inside
<...>. This is the AP CSA way. ArrayList<String>holds text.ArrayList<Integer>holds whole numbers.- A new list starts empty, with size
0.
إنشاء ArrayList
- اكتب نوع العناصر داخل
<...>. هذه هي الطريقة في AP CSA. ArrayList<String>يحتفظ بنصوص.ArrayList<Integer>يحتفظ بأعداد صحيحة.- تبدأ القائمة الجديدة فارغة، بحجم
0.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> names = new ArrayList<String>();
System.out.println(names.size()); // 0
names.add("Ann");
names.add("Bo");
System.out.println(names.size()); // 2
System.out.println(names); // [Ann, Bo]
}
}
The five methods you need
list.size()— how many items are in the list.list.add(x)— putxat the end of the list.list.get(i)— the item at positioni(the first position is 0).list.set(i, x)— replace the item at positioniwithx.list.remove(i)— take out the item at positioni; later items shift left.
الطرق الخمسة التي تحتاجها
list.size()— كم عدد العناصر في القائمة.list.add(x)— ضعxفي نهاية القائمة.list.get(i)— العنصر عند الموضعi(الموضع الأول هو 0).list.set(i, x)— استبدل العنصر عند الموضعiبـx.list.remove(i)— أزل العنصر عند الموضعi؛ تنزلق العناصر اللاحقة لليسار.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> fruit = new ArrayList<String>();
fruit.add("apple");
fruit.add("pear");
fruit.add("plum");
System.out.println(fruit.get(0)); // apple
fruit.set(1, "grape"); // pear -> grape
fruit.remove(2); // take out "plum"
System.out.println(fruit); // [apple, grape]
}
}
Numbers need Integer
- An
ArrayListcan only hold objects, not the simple typeint. - So we write
ArrayList<Integer>.Integeris the object form ofint. - Java changes between
intandIntegerfor you. This is called autoboxing. - You can
add(7)anint, andget(0)gives back a value you can use asint.
الأرقام تحتاج Integer
- الـ
ArrayListيمكنه احتواء كائنات فقط، وليس النوع البسيطint. - لذلك نكتب
ArrayList<Integer>.Integerهو الشكل الكائني لـint. - يغير Java بين
intوIntegerنيابة عنك. هذا يسمى التغليف التلقائي (autoboxing). - يمكنك
add(7)لـint، وget(0)يعيد قيمة يمكنك استخدامها كـint.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(10); // int 10 is boxed into Integer
nums.add(20);
int first = nums.get(0); // unboxed back to int
System.out.println(first + nums.get(1)); // 30
}
}
Two ways to traverse
- An index for-loop uses positions
0tosize() - 1. Use it when you need the index. - An enhanced for-loop (
for (int x : list)) reads each item in turn. Use it when you only need the values. - Both visit every item once, in order.
طريقتان للمرور
- حلقة for بالمؤشر تستخدم المواقع
0إلىsize() - 1. استخدمها عندما تحتاج المؤشر. - حلقة for المحسّنة (
for (int x : list)) تقرأ كل عنصر بالتتابع. استخدمها عندما تحتاج القيم فقط. - كلاهما يزور كل عنصر مرة واحدة، بالترتيب.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(3);
nums.add(5);
nums.add(8);
// index for-loop
for (int i = 0; i < nums.size(); i++) {
System.out.println("at " + i + ": " + nums.get(i));
}
// enhanced for-loop
int total = 0;
for (int x : nums) {
total = total + x;
}
System.out.println("total " + total); // total 16
}
}
Common mistakes
ArrayListuses.add,.get(i),.size()— not[].- Store objects: use
ArrayList<Integer>, notArrayList<int>.
أخطاء شائعة
ArrayListيستخدم.add،.get(i)،.size()— وليس[].- احفظ الكائنات: استخدم
ArrayList<Integer>، وليسArrayList<int>.
Now you try
- Each task pre-fills the class skeleton — write your code inside main, or complete the method shown.
- Press Run to compile and run, then Check answer.
- Your code compiles and runs on the server, so even the first run is fast.
الآن جرب بنفسك
- كل مهمة تملأ هيكل الفئة مسبقاً — اكتب كودك داخل main، أو أكمل الدالة المعروضة.
- اضغط تشغيل للمعالجة والتشغيل، ثم تحقق من الإجابة.
- كودك يُعالج ويُشغل على الخادم، لذا حتى التشغيل الأول سريع.
An ArrayList grows · ArrayList ينمو
Unlike an array, an ArrayList changes size as you add/remove. · على عكس المصفوفة، فإنArrayList يتغير حجمه أثناء الإضافة/الإزالة.
Complete sumList(ArrayList<Integer> a) so it returns the total of all numbers in the list. An empty list totals 0. Traverse with a loop. · أكمل sumList(ArrayList<Integer> a) لتُرجع المجموع الكلي لجميع الأرقام في القائمة. القائمة الفارغة مجموعها 0. تمرّر باستخدام حلقة.
Click Run to see the output here. · اضغط تشغيل لرؤية المخرجات هنا.
Complete countUp(int n) so it makes a new ArrayList<Integer>, adds the numbers 1, 2, ..., n in order, and returns it. If n is 0, return an empty list. · أكمل countUp(int n) لإنشاء ArrayList<Integer> جديد، وإضافة الأرقام 1, 2, ..., n بترتيبها، وإرجاعه. إذا كانت n تساوي 0، أرجع قائمة فارغة.
Click Run to see the output here. · اضغط تشغيل لرؤية المخرجات هنا.
Complete doubleAt(ArrayList<Integer> a, int i). Read the value at index i with get, then use set to store two times that value back at index i. Return nothing (void). · أكمل doubleAt(ArrayList<Integer> a, int i). اقرأ القيمة عند الفهرس i باستخدام get، ثم استخدم set لتخزين ضعف تلك القيمة مرة أخرى عند الفهرس i. لا تُرجع شيئًا (void).
Click Run to see the output here. · اضغط تشغيل لرؤية المخرجات هنا.