List و ArrayList
ArrayList هي أكثر Collections استخدامًا في Java. في هذا الدرس، سنتعلم كيفية استخدامها.
إنشاء ArrayList
JAVA
import java.util.ArrayList;
import java.util.List;
// قائمة فارغة
ArrayList<String> names = new ArrayList<>();
// قائمة بقيم أولية
List<Integer> numbers = new ArrayList<>(List.of(1, 2, 3, 4, 5));
// بسعة محددة
ArrayList<String> list = new ArrayList<>(100);
العمليات الأساسية
إضافة عناصر
JAVA
ArrayList<String> names = new ArrayList<>();
names.add("أحمد"); // إضافة في النهاية
names.add(0, "محمد"); // إضافة في موقع محدد
names.addAll(List.of("علي", "حسن")); // إضافة مجموعة
الوصول للعناصر
JAVA
ArrayList<String> names = new ArrayList<>(List.of("أحمد", "محمد", "علي"));
String first = names.get(0); // أحمد
int size = names.size(); // 3
boolean has = names.contains("محمد"); // true
int index = names.indexOf("علي"); // 2
تعديل العناصر
JAVA
ArrayList<String> names = new ArrayList<>(List.of("أحمد", "محمد", "علي"));
names.set(1, "حسن"); // استبدال العنصر في الموقع 1
حذف العناصر
JAVA
ArrayList<String> names = new ArrayList<>(List.of("أحمد", "محمد", "علي"));
names.remove(0); // حذف بالفهرس
names.remove("محمد"); // حذف بالقيمة
names.removeIf(n -> n.startsWith("أ")); // حذف بشرط
تفريغ القائمة
JAVA
names.clear(); // حذف جميع العناصر
boolean empty = names.isEmpty(); // true
المرور على القائمة
باستخدام for
JAVA
for (int i = 0; i < names.size(); i++) {
System.out.println(names.get(i));
}
باستخدام for-each
JAVA
for (String name : names) {
System.out.println(name);
}
باستخدام forEach (Java 8+)
JAVA
names.forEach(name -> System.out.println(name));
باستخدام Iterator
JAVA
Iterator<String> iterator = names.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
ترتيب القائمة
JAVA
import java.util.Collections;
ArrayList<Integer> numbers = new ArrayList<>(List.of(5, 2, 8, 1, 9));
Collections.sort(numbers); // ترتيب تصاعدي
Collections.reverse(numbers); // عكس الترتيب
Collections.shuffle(numbers); // خلط عشوائي
ترتيب مخصص
JAVA
ArrayList<String> names = new ArrayList<>(List.of("محمد", "أحمد", "علي"));
// ترتيب أبجدي
Collections.sort(names);
// ترتيب حسب الطول
names.sort((a, b) -> a.length() - b.length());
تحويل المصفوفات
من Array إلى ArrayList
JAVA
String[] array = {"أحمد", "محمد", "علي"};
List<String> list = new ArrayList<>(Arrays.asList(array));
// أو
List<String> list2 = List.of(array); // Java 9+
من ArrayList إلى Array
JAVA
List<String> list = new ArrayList<>(List.of("أحمد", "محمد", "علي"));
String[] array = list.toArray(new String[0]);
ArrayList مع الأنواع البدئية
JAVA
// ❌ خطأ: لا يمكن استخدام int
// ArrayList<int> list = new ArrayList<>();
// ✅ صحيح: استخدم Integer
ArrayList<Integer> list = new ArrayList<>();
list.add(10); // Auto-boxing: int → Integer
int value = list.get(0); // Auto-unboxing: Integer → int
مثال: قائمة مشتريات
JAVA
import java.util.ArrayList;
public class ShoppingList {
private ArrayList<String> items = new ArrayList<>();
public void addItem(String item) {
items.add(item);
System.out.println("تمت إضافة: " + item);
}
public void removeItem(String item) {
if (items.remove(item)) {
System.out.println("تم الحذف: " + item);
} else {
System.out.println("العنصر غير موجود");
}
}
public void display() {
System.out.println("\n--- قائمة المشتريات ---");
for (int i = 0; i < items.size(); i++) {
System.out.println((i + 1) + ". " + items.get(i));
}
}
public static void main(String[] args) {
ShoppingList list = new ShoppingList();
list.addItem("خبز");
list.addItem("حليب");
list.addItem("بيض");
list.display();
list.removeItem("حليب");
list.display();
}
}
❓ أسئلة شائعة
س لماذا نستخدم List بدلاً من ArrayList في التعريف؟
ج List هي الواجهة، ArrayList هي التنفيذ. هذا يسمح بتغيير التنفيذ بسهولة.
س ما هو Auto-boxing؟
ج التحويل التلقائي بين الأنواع البدئية والفئات المغلفة (int → Integer).
س هل ArrayList آمنة للخيوط؟
ج لا، استخدم Vector أو Collections.synchronizedList() للخيوط المتعددة.
📖 ملخص
- ArrayList هي قائمة ديناميكية
- العمليات: add، get، set، remove، size، contains
- الترتيب: Collections.sort()
- تحويل: Arrays.asList()، toArray()
- Auto-boxing للأنواع البدئية
📝 تمارين
- قائمة أسماء: أنشئ قائمة أسماء وأضف احذف وابحث
- ترتيب: أنشئ قائمة أرقام ورتبها تصاعديًا وتنازليًا
- قائمة مهام: أنشئ قائمة مهام مع إضافة وحذف وعرض
الدرس التالي
في الدرس التالي، سنتعلم Set و HashSet — المجموعات الفريدة.



