نظرة عامة على 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 تقبل مفاتيح مكررة؟
ج لا، المفاتيح فريدة. القيم يمكن أن تكون مكررة.
📖 ملخص
- List: قائمة مرتبة مع فهرس (ArrayList)
- Set: مجموعة فريدة (HashSet)
- Map: خريطة مفتاح-قيمة (HashMap)
- Collections: فئة مساعدة للترتيب والعمليات
📝 تمارين
- قائمة: أنشئ ArrayList من أسماء واطبعها
- مجموعة: أنشئ HashSet من أرقام وأزل التكرارات
- خريطة: أنشئ HashMap من أسماء ودرجات
الدرس التالي
في الدرس التالي، سنتعلم List و ArrayList — القوائم التفصيلية.



