🌟 HashSet في جافا: الدليل الشامل للمبتدئين
مرحباً بك في درس HashSet! إذا كنت قد استخدمت ArrayList من قبل، فستجد أن HashSet يشبهها لكن مع اختلافات مهمة جداً تجعله الخيار الأمثل في مواقع معينة.
ما هو HashSet؟ 🤔
HashSet هو أحد أنواع المجموعات (Collections) في جافا التي تخزن العناصر بطريقة فريدة - أي لا تسمح بتكرار العناصر. تخيلها كحقيبة ذكية ترفض وضع عنصرين متماثلين!
import java.util.HashSet;
HashSet<String> names = new HashSet<>();
لماذا نستخدم HashSet؟ 💡
- منع التكرار: يضمن عدم وجود عناصر مكررة تلقائياً
- أداء سريع: عمليات البحث والإضافة والحذف سريعة جداً
- ترتيب غير مضمون: العناصر لا تحفظ ترتيب إضافتها
إنشاء HashSet وإنشاء أول مجموعة
لإنشاء HashSet، نستخدم الصيغة الأساسية التالية:
// إنشاء HashSet لتخزين أسماء
HashSet<String> names = new HashSet<>();
// إنشاء HashSet لتخزين أرقام
HashSet<Integer> numbers = new HashSet<>();
العمليات الأساسية على HashSet 🛠️
1. إضافة عناصر (add())
HashSet<String> fruits = new HashSet<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
fruits.add("Apple"); // لن يضاف لأنه مكرر!
System.out.println(fruits); // [Apple, Banana, Orange]
2. التحقق من وجود عنصر (contains())
HashSet<String> fruits = new HashSet<>();
fruits.add("Apple");
fruits.add("Banana");
System.out.println(fruits.contains("Apple")); // true
System.out.println(fruits.contains("Strawberry")); // false
3. إزالة عنصر (remove())
HashSet<String> fruits = new HashSet<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.remove("Banana");
System.out.println(fruits); // [Apple]
4. معرفة الحجم (size())
HashSet<String> fruits = new HashSet<>();
fruits.add("Apple");
fruits.add("Banana");
System.out.println(fruits.size()); // 2
مثال عملي: إدارة قائمة جهات اتصال 📱
لنطبق ما تعلمناه في مثال واقعي:
import java.util.HashSet;
public class ContactManager {
public static void main(String[] args) {
HashSet<String> contacts = new HashSet<>();
// إضافة جهات اتصال
contacts.add("Ahmed: 0512345678");
contacts.add("Fatima: 0598765432");
contacts.add("Khaled: 0555555555");
contacts.add("Ahmed: 0512345678"); // مكرر - لن يضاف
// عرض الجهات
System.out.println("Contacts: " + contacts);
// التحقق من وجود جهة
if (contacts.contains("Fatima: 0598765432")) {
System.out.println("Fatima is in the list!");
}
// عدد جهات الاتصال
System.out.println("عدد الجهات: " + contacts.size());
}
}
الفرق بين ArrayList و HashSet 📊
| الميزة | ArrayList | HashSet |
|---|---|---|
| التكرار | يسمح بالتكرار | يمنع التكرار |
| الترتيب | يحفظ ترتيب الإضافة | لا يحفظ الترتيب |
| الأداء | أبطأ في البحث | أسرع في البحث |
متى نستخدم HashSet؟ 🎯
- عندما تريد منع العناصر المكررة تلقائياً
- عندما يكون البحث عن العناصر عملية متكررة
- عندما لا يهمك ترتيب العناصر
متى لا نستخدم HashSet؟ ⚠️
- عندما تحتاج لحفظ ترتيب الإضافة
- عندما تريد السماح بالعناصر المكررة
- عندما تحتاج للوصول للعناصر بواسطة index
خلاصة الدرس 📝
تعلمنا اليوم أن HashSet هو مجموعة ذكية تمنع التكرار وتوفر أداءً ممتازاً في البحث. إنه الخيار الأمثل عندما نريد ضمان تفرد البيانات مع سرعة في الأداء.
🎓 اختبر نفسك
السؤال 1 من 30% أكملت
ما هو الاختلاف الرئيسي بين HashSet و ArrayList من حيث التعامل مع العناصر المكررة؟
آخر تحديث: ١٦ مارس ٢٠٢٦
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال
جاري تحميل التعليقات...