نظرة عامة على Collections

Collections Framework هو مجموعة من الفئات الجاهزة لهياكل البيانات. في هذا الدرس، سنتعلم النظرة العامة.

لماذا Collections؟

بدون Collections:

JAVA
int[] numbers = new int[10];  // حجم ثابت
// لا بحث سريع
// لا حذف فعال

مع Collections:

JAVA
ArrayList<Integer> numbers = new ArrayList<>();  // حجم ديناميكي
// بحث وحذف فعال

أنواع Collections

List — قائمة مرتبة

الفئة الوصف الاستخدام
ArrayList قائمة ديناميكية الأكثر استخدامًا
LinkedList قائمة مترابطة إضافة/حذف متكرر
Vector قائمة متزامنة خيوط متعددة
JAVA
List<String> names = new ArrayList<>();
names.add("أحمد");
names.add("محمد");
names.add("علي");
System.out.println(names.get(0));  // أحمد

Set — مجموعة فريدة

الفئة الوصف الاستخدام
HashSet مجموعة بدون ترتيب الأكثر استخدامًا
TreeSet مجموعة مرتبة عند الحاجة للترتيب
LinkedHashSet مجموعة مرتبة بالإدراج الحفاظ على ترتيب الإدراج
JAVA
Set<String> uniqueNames = new HashSet<>();
uniqueNames.add("أحمد");
uniqueNames.add("أحمد");  // لن تُضاف
uniqueNames.add("محمد");
System.out.println(uniqueNames.size());  // 2

Map — خريطة مفتاح-قيمة

الفئة الوصف الاستخدام
HashMap خريطة بدون ترتيب الأكثر استخدامًا
TreeMap خريطة مرتبة عند الحاجة للترتيب
LinkedHashMap خريطة مرتبة بالإدراج الحفاظ على ترتيب الإدراج
JAVA
Map<String, Integer> ages = new HashMap<>();
ages.put("أحمد", 25);
ages.put("محمد", 30);
System.out.println(ages.get("أحمد"));  // 25

متى تستخدم أي منها

الحاجة الاستخدام
قائمة مرتبة مع فهرس List
عناصر فريدة Set
مفتاح-قيمة Map
قائمة سريعة ArrayList
إضافة/حذف سريع LinkedList
بحث سريع HashSet
ترتيب TreeSet/TreeMap

Collection vs Collections

المفهوم الوصف
Collection واجهة أساسية للقوائم والمجموعات
Collections فئة مساعدة مع دوال ثابتة
JAVA
Collections.sort(list);      // ترتيب
Collections.reverse(list);   // عكس
Collections.shuffle(list);   // خلط
Collections.min(list);       // الأدنى
Collections.max(list);       // الأعلى

❓ أسئلة شائعة

س ما الفرق بين ArrayList و LinkedList؟
ج ArrayList أسرع في الوصول بالفهرس. LinkedList أسرع في الإضافة والحذف.
س لماذا Set لا يسمح بالتكرار؟
ج Set تستخدم hash لضمان عدم تكرار العناصر.
س هل Map تقبل مفاتيح مكررة؟
ج لا، المفاتيح فريدة. القيم يمكن أن تكون مكررة.

📖 ملخص

📝 تمارين

  1. قائمة: أنشئ ArrayList من أسماء واطبعها
  2. مجموعة: أنشئ HashSet من أرقام وأزل التكرارات
  3. خريطة: أنشئ HashMap من أسماء ودرجات

الدرس التالي

في الدرس التالي، سنتعلم List و ArrayList — القوائم التفصيلية.

100%