المصدر: متوسط سيساعدك هذا البرنامج التعليمي على فهم أفضل لطريقة عمل الفئات والواجهات المختلفة المضمنة في Java Collection Framework. Java Collection عبارة عن إطار عمل يوفر بنية موحدة لتخزين وإدارة مجموعة من الكائنات. إنها في جوهرها مجموعة من الفئات والواجهات التي توفر طريقة قياسية لتمثيل ومعالجة مجموعات الكائنات في لغة Java. يساعد الإطار أيضًا في تنفيذ هياكل البيانات شائعة الاستخدام مثل القائمة والتعيين والخريطة. يتضمن Java Collection Framework العديد من الواجهات والفئات. وفيما يلي قائمة ببعض منها:
واجهات
تحدد الواجهات الموجودة في Java Collection Framework السلوك العام والعمليات التي يمكن إجراؤها على المجموعات. يتضمن ذلك إضافة العناصر أو إزالتها، وتكرار العناصر في المجموعة، والمزيد.- المجموعة : الواجهة الجذرية في التسلسل الهرمي للمجموعة، والتي تمثل مجموعة من الكائنات المعروفة بالعناصر.
- القائمة : مجموعة مرتبة من العناصر التي تسمح بالتكرار.
- Set : مجموعة من العناصر التي لا تسمح بالتكرار.
- الخريطة : مجموعة من أزواج المفتاح والقيمة، حيث يكون كل مفتاح فريدًا.
- قائمة الانتظار : قائمة الانتظار هي بنية بيانات تُستخدم لتخزين العناصر في أول ما يدخل أولاً يخرج (FIFO).
مجموعة
المجموعة هي مجموعة من الكائنات المعروفة بعناصرها. هذا كائن يمكن أن يحتوي على مراجع لكائنات أخرى. واجهة المجموعة هي جذر التسلسل الهرمي للمجموعة. هذه هي الواجهة الأساسية لجميع المجموعات في Java Collection Framework. فهو يحدد الطرق الأساسية التي يجب تنفيذها في جميع المجموعات، مثل add() و remove() و contains() . فيما يلي مثال على استخدام المجموعات في Java Collection Framework. هنا يتم استخدام واجهة المجموعة لإضافة وإزالة العناصر من المجموعة:import java.util.Collection;
import java.util.ArrayList;
public class CollectionExample {
public static void main(String[] args) {
// Создаем новую коллекцию
Collection<String> stringCollection = new ArrayList<>();
// Добавляем несколько элементов в коллекцию
stringCollection.add("hello");
stringCollection.add("world");
stringCollection.add("foo");
stringCollection.add("bar");
// Печатаем число элементов в коллекции
System.out.println("Number of elements: " + stringCollection.size());
// Удаляем элемент из коллекции
stringCollection.remove("foo");
// Опять печатаем число элементов в коллекции
System.out.println("Number of elements: " + stringCollection.size());
}
}
الإخراج هو:
عدد العناصر: 4 عدد العناصر: 3
كما ترون، تعد واجهة المجموعة طريقة بسيطة ومريحة لإجراء عمليات مشتركة مع مجموعة من الكائنات. غالبًا ما يتم استخدامه كنقطة بداية عند العمل مع المجموعات في Java. يتضمن Java Collection Framework العديد من الواجهات التي تحدد السلوك الشائع لأنواع مختلفة من المجموعات. بعضها جزء من مجموعة واجهة java.util.Collection :
- java.util.List
- java.util.set
- java.util.Queue
java.util.List
القائمة عبارة عن مجموعة مرتبة من الكائنات، كل عنصر منها يحتل موقعًا محددًا في القائمة. تعمل واجهة القائمة على توسيع واجهة المجموعة وتضيف عدة طرق للعمل مع القوائم، مثل طرق الوصول إلى العناصر حسب موقعها في القائمة وطرق البحث في القوائم وفرزها. يمكن أن تحتوي القائمة على عناصر مكررة ، ويمكن الوصول إلى هذه العناصر من خلال موقعها في القائمة. فيما يلي مثال لاستخدام واجهة القائمة لإضافة العناصر الموجودة في القائمة وإزالتها والوصول إليها:import java.util.List;
import java.util.ArrayList;
public class ListExample {
public static void main(String[] args) {
// Создаем новый список
List<String> stringList = new ArrayList<>();
// Добавляем несколько элементов в список
stringList.add("India");
stringList.add("UAE");
stringList.add("London");
stringList.add("US");
// Печатаем первый элемент в списке
System.out.println("First element: " + stringList.get(0));
// Удаляем второй элемент из списка
stringList.remove(1);
// Печатаем второй элемент в списке
System.out.println("Second element: " + stringList.get(1));
}
}
خاتمة:
العنصر الأول: الهند العنصر الثاني: لندن
كما هو موضح أعلاه، توفر واجهة القائمة طريقة ملائمة للعمل مع مجموعات مرتبة من العناصر. يتم استخدامه عادةً عندما تحتاج إلى الحفاظ على ترتيب العناصر في مجموعة أو عندما تحتاج إلى الوصول إلى العناصر من خلال فهرسها في القائمة.
java.util.Set
المجموعة الموجودة في Java Collection Framework هي مجموعة غير مرتبة من العناصر الفريدة التي لا تسمح بالعناصر المكررة . تعمل واجهة Set على توسيع واجهة Collection وتضيف عدة طرق، مثل طرق التحقق مما إذا كان العنصر موجودًا في مجموعة وطرق إضافة وإزالة العناصر من المجموعة. فيما يلي مثال لاستخدام واجهة Set لإضافة وإزالة العناصر من مجموعة في Java Collection Framework:import java.util.Set;
import java.util.HashSet;
public class SetExample {
public static void main(String[] args) {
// Создаем новый set
Set<String> stringSet = new HashSet<>();
// Добавляем несколько элементов в set
stringSet.add("Jan");
stringSet.add("Feb");
stringSet.add("March");
stringSet.add("April");
// Проверяем наличие в set element "March"
if (stringSet.contains("March")) {
System.out.println("The set contains the element 'March'");
}
// Удаляем элемент "April" из set
stringSet.remove("April");
// Опять проверяем наличие element "April" в set
if (!stringSet.contains("April")) {
System.out.println("The set no longer contains the element 'April'");
}
}
}
خاتمة:
المجموعة تحتوي على العنصر "مارس" المجموعة لم تعد تحتوي على العنصر "أبريل"
java.util.Queue
قائمة الانتظار هي بنية بيانات تُستخدم لتخزين العناصر بترتيب الوارد أولاً يخرج أولاً (FIFO). وهذا يعني أن العنصر الأول المضاف إلى قائمة الانتظار سيكون أول عنصر تتم إزالته. فيما يلي مثال لكيفية استخدام قائمة الانتظار في Java Collection Framework:// Creation очереди
Queue<String> queue = new LinkedList<>();
// Добавление элементов в очередь
queue.add("apple");
queue.add("banana");
queue.add("orange");
// Печатаем очередь
System.out.println("Queue: " + queue);
// Удаляем элемент из очереди
String element = queue.remove();
System.out.println("Removed element: " + element);
// Печатаем обновленную очередь
System.out.println("Queue: " + queue);
في هذا المثال، أنشأنا قائمة انتظار سلسلة وأضفنا إليها ثلاثة عناصر: "تفاحة" و"موزة" و"برتقالية". ثم نقوم بطباعة قائمة الانتظار لمعرفة حالتها الحالية. بعد ذلك، نقوم بإزالة العنصر من قائمة الانتظار وطباعته على وحدة التحكم. أخيرًا، نقوم بطباعة قائمة الانتظار المحدثة للتأكد من أن العنصر المحذوف لم يعد موجودًا في قائمة الانتظار.
خريطة
يتم استخدام واجهة java.util.Map في Java Collection Framework لتعيين المفاتيح للقيم. فهو يسمح لك بتخزين العناصر كأزواج ذات قيمة أساسية ويوفر طرقًا للوصول إلى العناصر الموجودة في الخريطة وتعديلها وتكرارها. فيما يلي مثال لاستخدام واجهة الخريطة :// Создаем Map
Map<String, Integer> map = new HashMap <>();
// Добавляем элементы в Map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печать Map
System.out.println("Map: " + map);
// Получаем meaning для определенного ключа
int value = map.get( "banana" );
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из Map
map.remove("orange");
// Печать обновленной карты
System.out.println( "Map: " + map);
في هذا المثال، قمنا بإنشاء خريطة من السلاسل والأعداد الصحيحة عن طريق إضافة ثلاثة عناصر إليها: "تفاحة" تطابق 1، و"موزة" تطابق 2، و"برتقالي" تطابق 3. ثم نقوم بطباعة الخريطة لمعرفة معناها الحالي. بعد ذلك نحصل على قيمة مفتاح "الموزة" ونطبعه على وحدة التحكم. أخيرًا، نقوم بإزالة زوج المفتاح والقيمة لـ "البرتقالي" من الخريطة ونطبع الخريطة المحدثة لنرى أن العنصر المحذوف لم يعد موجودًا.
الطبقات
الفئة هي تطبيق ملموس لواجهة المجموعة. وهو يوفر تطبيقات محددة للسلوكيات والعمليات الشائعة التي تحددها الواجهات في إطار العمل.- ArrayList : تطبيق لواجهة القائمة بمصفوفة يمكن تغيير حجمها.
- LinkedList : قائمة مرتبطة بشكل مضاعف، تطبيق لواجهات List و Deque .
- HashSet : تطبيق Set يستخدم جدول التجزئة للتخزين.
- TreeSet : تطبيق Set يستخدم شجرة للتخزين.
- HashMap : تطبيق Map يستخدم جدول التجزئة للتخزين.
ArrayList
يتم استخدام فئة java.util.ArrayList في مجموعات Java لتخزين مجموعة من العناصر يمكن تغيير حجمها في القائمة. إنه تطبيق مستخدم على نطاق واسع لواجهة java.util.List التي تستخدم مصفوفة لتخزين العناصر وتوفر طرقًا فعالة للوصول إلى العناصر الموجودة في القائمة وتعديلها وتكرارها. توفر الفئة java.util.ArrayList وصولاً عشوائيًا سريعًا إلى عناصرها، لكن عملية الإدراج والإزالة بطيئة في مواضع عشوائية. فيما يلي مثال لاستخدام فئة ArrayList في Java Collection Framework:// Создаем array list
List<String> list = new ArrayList<>();
// Добавляем элементы в array list
list.add("qa");
list.add("devops");
list.add("dev");
// Печатаем array list
System.out.println("Array list: " + list);
// Доступ к элементу по определенному индексу
String element = list.get(1);
System.out.println("Element at index 1: " + element);
// Удаление element из the array list
list.remove(1);
// Print the updated array list
System.out.println("Array list: " + list);
كما ترى، قمنا بإنشاء مصفوفة من السلاسل وأضفنا إليها ثلاثة عناصر: "qa" و"devops" و"dev". قمنا بعد ذلك بطباعة قائمة المصفوفة لنرى حالتها الحالية. بعد ذلك، نصل إلى العنصر الموجود في الفهرس 1 ونطبعه على وحدة التحكم. أخيرًا، نقوم بإزالة العنصر الموجود في الفهرس 1 من قائمة المصفوفات وطباعة قائمة مصفوفات محدثة للتأكد من أن العنصر المحذوف لم يعد موجودًا في القائمة.
قائمة مرتبطة
ترث فئة java.util.LinkedList في Java Collection Framework من فئة AbstractList وتقوم بتنفيذ واجهات List و Deque . فهو يوفر طرقًا فعالة لإضافة العناصر وإزالتها والوصول إليها في بداية القائمة ونهايتها. هذه الفئة هي أيضًا تطبيق لواجهة القائمة ، والتي تستخدم قائمة مرتبطة بشكل مزدوج لتخزين العناصر. فهو يوفر إدراجًا وحذفًا سريعًا في مواضع عشوائية، ولكنه يوفر وصولًا عشوائيًا بطيئًا إلى عناصره. فيما يلي مثال لكيفية استخدام فئة LinkedList في Java Collection Framework:// Создаем linked list
List<String> list = new LinkedList<>();
// Добавляем элементы в linked list
list.add("selenium");
list.add("cypress");
list.add("playwright");
// Печатаем linked list
System.out.println("Linked list: " + list);
// Добавляем элемент в начало списка
list.add(0, "webdriver.io");
// Печатаем обновленный linked list
System.out.println("Linked list: " + list);
// Удаляем первый элемент в списке
list.remove(0);
// Еще раз печатаем обновленный linked list
System.out.println("Linked list: " + list);
في هذا المثال، أنشأنا قائمة مرتبطة من السلاسل وأضفنا إليها ثلاثة عناصر: "السيلينيوم"، و"السرو"، و"الكاتب المسرحي". نقوم بعد ذلك بطباعة القائمة المرتبطة لمعرفة حالتها الحالية. بعد ذلك، نضيف العنصر "webdriver.io" إلى بداية القائمة ونطبع القائمة المرتبطة المحدثة. أخيرًا، نقوم بإزالة العنصر الأول من القائمة وطباعة القائمة المرتبطة المحدثة مرة أخرى لنرى أن العنصر المحذوف لم يعد موجودًا في القائمة.
HashSet
يتم استخدام فئة java.util.HashSet في Java Collection Framework لتخزين مجموعة من العناصر الفريدة في مجموعة. وهو يوفر تطبيقًا قائمًا على جدول التجزئة لواجهة java.util.Set . كما أنه يوفر سرعة الإدراج والحذف والبحث، لكنه لا يحافظ على ترتيب عناصره. فيما يلي مثال لاستخدام فئة HashSet في Java Collection Framework:// Создаем hash set
Set<String> set = new HashSet<>();
// Добавляем элементы в hash set
set.add("rose");
set.add("lily");
set.add("lotus");
// Попытка добавить повторяющийся элемент
set.add("rose");
// Печатаем hash set
System.out.println("Hash set: " + set);
// Удаляем элемент из hash set
set.remove("lily");
// Печать обновленного hash set
System.out.println("Hash set: " + set);
قمنا هنا بإنشاء مجموعة من السلاسل وأضفنا إليها ثلاثة عناصر: "الورد" و"الزنبق" و"اللوتس". نحاول بعد ذلك إضافة العنصر "rose" مرة أخرى، ولكن بما أن مجموعة التجزئة لا تسمح بالتكرارات، فلن تتم إضافته. بعد ذلك نقوم بطباعة مجموعة التجزئة لمعرفة حالتها الحالية. نقوم بعد ذلك بإزالة العنصر "الزنبق" من المجموعة وطباعة التجزئة المحدثة للمجموعة للتأكد من أن العنصر المحذوف لم يعد موجودًا في المجموعة.
TreeSet
يتم استخدام فئة java.util.TreeSet في Java Collection Framework لتخزين مجموعة من العناصر الفريدة في مجموعة مرتبة بترتيب تصاعدي. وهو يوفر تطبيقًا قائمًا على الشجرة لواجهة java.util.Set لتخزين العناصر دون السماح بالعناصر المكررة. يوفر الفصل سرعة الإدراج والحذف والبحث، ويحافظ على ترتيب عناصره حسب ترتيبها الطبيعي أو المقارنة. فيما يلي مثال لكيفية استخدام فئة TreeSet في Java Collection Framework:// Создаем tree set
Set<String> set = new TreeSet<>();
// Добавляем элементы в tree set
set.add("apple");
set.add("banana");
set.add("orange");
// Попытка добавить повторяющийся элемент
set.add("apple");
// Печатаем tree set
System.out.println("Tree set: " + set);
// Удаляем элемент из tree set
set.remove("banana");
// Печатаем обновленный tree set
System.out.println("Tree set: " + set);
في هذا المثال، قمنا بإنشاء مجموعة شجرية من السلاسل وأضفنا إليها ثلاثة عناصر: "التفاحة" و"الموزة" و"البرتقال". نحاول بعد ذلك إضافة عنصر "التفاحة" مرة أخرى، ولكن نظرًا لأن مجموعة الأشجار لا تسمح بالتكرارات، فلن تتم إضافته. بعد ذلك نقوم بطباعة مجموعة الشجرة لنرى حالتها الحالية. وبما أن مجموعة الأشجار مرتبة تصاعديًا، فستتم طباعة العناصر بالترتيب: "تفاحة" و"موز" و"برتقالي". نقوم بعد ذلك بإزالة عنصر "الموزة" من المجموعة وطباعة مجموعة الشجرة المحدثة للتأكد من أن العنصر المحذوف لم يعد موجودًا في المجموعة.
خريطة التجزئة
يتم استخدام فئة java.util.HashMap في Java Collection Framework لتخزين تعيين المفاتيح للقيم في الخريطة. وهو يوفر تطبيقًا قائمًا على جدول التجزئة لواجهة java.util.Map ويسمح بتخزين العناصر كأزواج ذات قيمة رئيسية. توفر هذه الفئة إمكانية الإدراج والحذف والبحث بسرعة، ولكنها لا تحافظ على ترتيب عناصرها. فيما يلي مثال لكيفية استخدام فئة HashMap في Java Collection Framework:// Создаем hash map
Map<String, Integer> map = new HashMap<>();
// Добавляем элементы в hash map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печатаем hash map
System.out.println("Hash map: " + map);
// Получаем meaning для определенного ключа
int value = map.get("banana");
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из hash map
map.remove("orange");
// Печатаем обновленный hash map
System.out.println("Hash map: " + map);
في هذا المثال، قمنا بإنشاء خريطة تجزئة لسلاسل أعداد صحيحة وأضفنا إليها ثلاثة عناصر: "تفاحة" تطابق 1، "موز" تطابق 2، و"برتقالي" تطابق 3. ثم نقوم بطباعة خريطة التجزئة لرؤيتها الحالة الحالية. بعد ذلك نحصل على قيمة مفتاح "الموزة" ونطبعه على وحدة التحكم. أخيرًا، نقوم بإزالة زوج المفتاح والقيمة لـ "البرتقالي" من خريطة التجزئة ونطبع خريطة التجزئة المحدثة لنرى أن العنصر المحذوف لم يعد موجودًا فيها.
GO TO FULL VERSION