Collections Framework هو مجموعة موحدة من الواجهات والفئات في Java لتخزين ومعالجة مجموعات من الكائنات — List، Set، Map، Queue، وتطبيقاتها. فهو يوفر هياكل بيانات جاهزة واختبرت جيدًا بحيث نادرًا ما تبني بنفسك.
Collections Framework هو مجموعة موحدة من الواجهات والفئات في Java لتخزين ومعالجة مجموعات من الكائنات — List، Set، Map، Queue، وتطبيقاتها. فهو يوفر هياكل بيانات جاهزة واختبرت جيدًا بحيث نادرًا ما تبني بنفسك.
Collection
├── List — ordered, allows duplicates, indexed access
├── Set — no duplicates, models uniqueness
└── Queue — FIFO/priority ordering for processing
Map (separate hierarchy) — key→value pairs
List<String> list = new ArrayList<>(); // backed by an array — fast random access
list.add("a");
list.get(0); // index access — O(1)
list.contains("a"); // O(n) search
// LinkedList — fast insert/remove at ends, O(n) random access
ArrayList (مدعوم بالمصفوفة، فهرسة سريعة) هو الافتراضي؛ LinkedList يناسب الإدراجات المتكررة في النهاية.
Set<String> set = new HashSet<>(); // O(1) add/contains, NO order
set.add("a");
set.add("a"); // ignored — duplicates not allowed
set.contains("a"); // O(1) — great for membership tests
// TreeSet — sorted order; LinkedHashSet — insertion order
HashSet يعطي فحوصات تفرد O(1)؛ TreeSet يحافظ على العناصر مرتبة.
Map<String, Integer> map = new HashMap<>(); // O(1) get/put, no order
map.put("age", 30);
map.get("age"); // 30
map.getOrDefault("x", 0); // safe access with default
map.computeIfAbsent("list", k -> new ArrayList<>()); // handy for grouping
// TreeMap — sorted by key; LinkedHashMap — insertion order
HashMap هو الخيار الأساسي للبحث السريع O(1) المبني على المفتاح.
Need ordered + indexed + duplicates → ArrayList
Need uniqueness, fast lookup → HashSet
Need key→value, fast lookup → HashMap
Need sorted order → TreeSet / TreeMap
Need FIFO processing → ArrayDeque / LinkedList (Queue)
Need thread-safety → ConcurrentHashMap, etc.
ArrayList: get O(1), add-end O(1), contains/remove O(n)
HashMap/HashSet: get/put/contains O(1) average
TreeMap/TreeSet: O(log n) (sorted)
LinkedList: add/remove-ends O(1), get O(n)
إن Collections Framework من أكثر الأجزاء المستخدمة في Java — تقريبًا كل برنامج يخزن ومعالجة مجموعات من البيانات باستخدامه.
اختيار المجموعة الصحيحة هو مهارة رئيسية تؤثر بشكل مباشر على الصحة والأداء: ArrayList للبيانات المرتبة المفهرسة، HashSet للفرادة، HashMap للبحث السريع المبني على المفتاح، والمتغيرات المرتبة/المتزامنة عند الحاجة.
فهم الواجهات (List/Set/Map/Queue)، وتطبيقاتها، وخاصة خصائص الأداء (بحث HashMap O(1) مقابل بحث القائمة O(n)) يتيح لك اختيار الهيكل المناسب بدلاً من الاعتماد على الافتراضي الخاطئ (سبب شائع للكود البطيء).
إنها معرفة أساسية وعملية لتطوير Java اليومي.