استخدام المجموعات (Collections) في جافا

Amine
30/09/2024

ما هي المجموعات (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. نوصي بممارسة التمرين المقدم لاكتساب المزيد من الخبرة في التعامل مع المجموعات في جافا. لا تنسَ ترك تعليق أو مشاركة هذا الدرس مع أصدقائك على وسائل التواصل الاجتماعي إذا وجدته مفيدًا!

التعليقات

اترك تعليقاً