استخدام المجموعات (Collections) في جافا
ما هي المجموعات (Collections) في جافا؟
المجموعات (Collections) في جافا هي إطار عمل (Framework) يُستخدم لتخزين البيانات بشكل منظم وإجراء العمليات عليها مثل الإضافة، الحذف، والبحث. يوفر إطار عمل المجموعات في جافا أنواعًا متعددة من الهياكل مثل القوائم (Lists)، المجموعات (Sets)، والخرائط (Maps) لتسهيل التعامل مع البيانات.
مكونات إطار عمل المجموعات في جافا
إطار عمل المجموعات (Java Collections Framework) يحتوي على عدة مكونات رئيسية:
- List: قائمة مرتبة من العناصر يمكن أن تحتوي على عناصر مكررة. أشهر الفئات التي تطبق
List
هيArrayList
وLinkedList
. - Set: مجموعة غير مرتبة من العناصر لا تحتوي على عناصر مكررة. أشهر الفئات التي تطبق
Set
هيHashSet
وTreeSet
. - Map: مجموعة من الأزواج (Key-Value) حيث يتم ربط كل مفتاح (Key) بقيمة (Value). أشهر الفئات التي تطبق
Map
هيHashMap
وTreeMap
.
كيفية استخدام ArrayList في جافا
ArrayList
هي فئة تطبق واجهة List
وتستخدم لتخزين قائمة ديناميكية من العناصر. يمكنك إضافة، حذف، والوصول إلى العناصر بسهولة باستخدام الفهرس (Index). مثال:
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList names = new ArrayList<>();
names.add("أحمد");
names.add("سارة");
names.add("محمد");
// طباعة جميع العناصر في القائمة
System.out.println("قائمة الأسماء: " + names);
// الوصول إلى عنصر باستخدام الفهرس
System.out.println("العنصر الأول: " + names.get(0));
// حذف عنصر باستخدام الفهرس
names.remove(1);
System.out.println("بعد حذف العنصر الثاني: " + names);
}
}
في هذا المثال، قمنا بإنشاء قائمة ArrayList
لتخزين أسماء. أضفنا بعض الأسماء، ثم قمنا بطباعتها، والوصول إلى عنصر محدد، وحذف عنصر من القائمة.
كيفية استخدام HashMap في جافا
HashMap
هي فئة تطبق واجهة Map
وتُستخدم لتخزين أزواج من القيم (Key-Value) حيث يتم ربط كل مفتاح بقيمة معينة. مثال:
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap ages = new HashMap<>();
ages.put("أحمد", 25);
ages.put("سارة", 30);
ages.put("محمد", 20);
// طباعة جميع الأزواج (Key-Value)
System.out.println("الأعمار: " + ages);
// الوصول إلى قيمة باستخدام المفتاح
System.out.println("عمر سارة: " + ages.get("سارة"));
// حذف عنصر باستخدام المفتاح
ages.remove("محمد");
System.out.println("بعد حذف محمد: " + ages);
}
}
في هذا المثال، قمنا بإنشاء HashMap
لتخزين أسماء الأشخاص مع أعمارهم كقيم. أضفنا بعض الأسماء والأعمار، ثم قمنا بطباعتها، والوصول إلى قيمة باستخدام المفتاح، وحذف عنصر من الخريطة.
كيفية استخدام HashSet في جافا
HashSet
هي فئة تطبق واجهة Set
وتُستخدم لتخزين مجموعة غير مرتبة من العناصر الفريدة (Unique Elements). مثال:
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
HashSet countries = new HashSet<>();
countries.add("الجزائر");
countries.add("المغرب");
countries.add("تونس");
countries.add("الجزائر"); // لن يتم إضافته مرة أخرى لأنه مكرر
// طباعة جميع العناصر في المجموعة
System.out.println("الدول: " + countries);
// التحقق مما إذا كانت المجموعة تحتوي على عنصر معين
System.out.println("هل المجموعة تحتوي على تونس؟ " + countries.contains("تونس"));
// حذف عنصر من المجموعة
countries.remove("المغرب");
System.out.println("بعد حذف المغرب: " + countries);
}
}
في هذا المثال، قمنا بإنشاء HashSet
لتخزين أسماء الدول. أضفنا بعض الدول، ثم قمنا بطباعتها، والتحقق مما إذا كانت المجموعة تحتوي على عنصر معين، وحذف عنصر من المجموعة.
الفرق بين ArrayList و HashSet و HashMap
الفرق الرئيسي بين ArrayList
، HashSet
، و HashMap
هو:
- ArrayList: قائمة مرتبة من العناصر يمكن أن تحتوي على عناصر مكررة، ويمكن الوصول إليها باستخدام الفهرس.
- HashSet: مجموعة غير مرتبة من العناصر الفريدة (Unique Elements) ولا يمكن أن تحتوي على عناصر مكررة.
- HashMap: خريطة تحتوي على أزواج من القيم (Key-Value) حيث يتم ربط كل مفتاح بقيمة، ولا يمكن أن يحتوي على مفاتيح مكررة.
التكرار (Iteration) على المجموعات في جافا
يمكنك استخدام حلقة for-each
أو كائن Iterator
للتكرار على العناصر في المجموعات:
import java.util.ArrayList;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
ArrayList names = new ArrayList<>();
names.add("أحمد");
names.add("سارة");
names.add("محمد");
// التكرار باستخدام for-each
System.out.println("التكرار باستخدام for-each:");
for (String name : names) {
System.out.println(name);
}
// التكرار باستخدام Iterator
System.out.println("التكرار باستخدام Iterator:");
Iterator iterator = names.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
في هذا المثال، قمنا باستخدام حلقة for-each
للتكرار على العناصر في قائمة ArrayList
، ثم استخدمنا كائن Iterator
للتكرار مرة أخرى.
تمرين (مستوى متوسط): إنشاء قائمة من الأرقام والتعامل معها
في هذا التمرين، سنقوم بإنشاء قائمة من الأرقام الصحيحة باستخدام ArrayList
، ثم سنقوم بحساب المجموع، المتوسط، وأكبر وأصغر عنصر في القائمة.
المتطلبات:
- إنشاء قائمة من الأرقام باستخدام
ArrayList
. - إضافة الأرقام من 1 إلى 10 إلى القائمة.
- حساب المجموع باستخدام حلقة
for-each
. - حساب المتوسط، وأكبر وأصغر عنصر في القائمة.
الكود:
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList numbers = new ArrayList<>();
// إضافة الأرقام من 1 إلى 10
for (int i = 1; i <= 10; i++) {
numbers.add(i);
}
// حساب المجموع
int sum = 0;
for (int number : numbers) {
sum += number;
}
// حساب المتوسط
double average = sum / (double) numbers.size();
// حساب أكبر وأصغر عنصر
int max = numbers.get(0);
int min = numbers.get(0);
for (int number : numbers) {
if (number > max) {
max = number;
}
if (number < min) {
min = number;
}
}
System.out.println("الأرقام: " + numbers);
System.out.println("المجموع: " + sum);
System.out.println("المتوسط: " + average);
System.out.println("أكبر عنصر: " + max);
System.out.println("أصغر عنصر: " + min);
}
}
شرح الكود:
- قمنا بإنشاء قائمة من الأرقام باستخدام
ArrayList
، وأضفنا الأرقام من 1 إلى 10. - استخدمنا حلقة
for-each
لحساب المجموع، ثم قمنا بحساب المتوسط، وأكبر وأصغر عنصر في القائمة.
جرّب تنفيذ هذا البرنامج بنفسك، وشارك نتيجتك معنا في التعليقات! إذا واجهتك أي مشكلة أو كان لديك سؤال، لا تتردد في طرحه.
خاتمة
في هذا الدرس، تعرفنا على كيفية استخدام المجموعات (Collections) في جافا، وفهمنا الفرق بين ArrayList
، HashMap
، و HashSet
. نوصي بممارسة التمرين المقدم لاكتساب المزيد من الخبرة في التعامل مع المجموعات في جافا. لا تنسَ ترك تعليق أو مشاركة هذا الدرس مع أصدقائك على وسائل التواصل الاجتماعي إذا وجدته مفيدًا!
اترك تعليقاً