🗺️ HashMap في جافا: دليل المبتدئين الشامل لتخزين البيانات بالمفاتيح
مرحباً بك في درس HashMap! إذا كنت قد استخدمت ArrayList من قبل، فأنت تعلم أنها تخزن العناصر بناءً على الفهرس (0, 1, 2...). لكن ماذا لو أردت تخزين البيانات باستخدام مفتاح خاص بك بدلاً من الأرقام؟ هنا يأتي دور HashMap، وهي واحدة من أكثر هياكل البيانات فائدة في جافا.
🤔 ما هي الـ HashMap؟
HashMap هي عبارة عن مجموعة (Collection) تخزن البيانات على شكل أزواج "مفتاح-قيمة" (Key-Value Pairs). تخيلها مثل دليل الهاتف:
- المفتاح (Key) هو اسم الشخص (مثل "أحمد").
- القيمة (Value) هو رقم الهاتف المرتبط بهذا الاسم.
العلاقة بين المفتاح والقيمة هي علاقة فريدة. لكل مفتاح، هناك قيمة واحدة مرتبطة به. هذا يجعل البحث عن البيانات سريعاً جداً، لأنك تحتاج فقط إلى معرفة المفتاح لاسترجاع قيمته مباشرة.
📝 كيفية إنشاء HashMap
لإنشاء كائن من HashMap، نستخدم الكلمة الأساسية new. يجب علينا أيضاً تحديد نوع البيانات للمفتاح (Key) ونوع البيانات للقيمة (Value).
بناء الجملة (Syntax):
HashMap<KeyDataType, ValueDataType> mapName = new HashMap<>();
مثال عملي بسيط:
لننشئ HashMap لتخزين أسماء الطلاب (كمفاتيح) ودرجاتهم (كقيم). المفاتيح من نوع String والقيم من نوع Integer.
import java.util.HashMap; // يجب استيراد المكتبة أولاً
public class Main {
public static void main(String[] args) {
// إنشاء HashMap جديدة
HashMap<String, Integer> studentGrades = new HashMap<>();
System.out.println("تم إنشاء HashMap فارغة!");
}
}
✨ أهم العمليات الأساسية على HashMap
1. إضافة عنصر: put()
تُستخدم الدالة put(key, value) لإضافة زوج مفتاح-قيمة جديد إلى الـ HashMap.
studentGrades.put("Ahmed", 95);
studentGrades.put("Fatima", 88);
studentGrades.put("Khaled", 72);
الآن، تحتوي studentGrades على 3 عناصر.
2. استرجاع قيمة عنصر: get()
تُستخدم الدالة get(key) للحصول على القيمة المرتبطة بمفتاح معين.
int ahmedGrade = studentGrades.get("Ahmed");
System.out.println("Ahmed's grade is: " + ahmedGrade); // will print: Ahmed's grade is: 95
3. التحقق من وجود مفتاح: containsKey()
تتحقق هذه الدالة مما إذا كان المفتاح موجوداً في الـ HashMap، وتُرجع true أو false.
boolean exists = studentGrades.containsKey("Fatima");
System.out.println("Is Fatima present? " + exists); // will print: true
4. إزالة عنصر: remove()
تُزيل الدالة remove(key) العنصر المرتبط بالمفتاح المحدد.
studentGrades.remove("Khaled");
// لم يعد مفتاح "خالد" موجوداً في الـ HashMap
5. معرفة الحجم: size()
تُرجع الدالة size() عدد أزواج المفتاح-قيمة الموجودة في الـ HashMap.
int size = studentGrades.size();
System.out.println("عدد الطلاب: " + size); // سيطبع: 2 بعد إزالة خالد
💡 مثال تطبيقي متكامل
لنجمع كل ما تعلمناه في مثال واحد بسيط وواضح.
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
// إنشاء HashMap لتخزين سعر الفواكه
HashMap<String, Double> fruitPrices = new HashMap<>();
// إضافة عناصر
fruitPrices.put("Apple", 5.50);
fruitPrices.put("Banana", 3.25);
fruitPrices.put("Orange", 4.80);
// استرجاع سعر الموز
double bananaPrice = fruitPrices.get("Banana");
System.out.println("Banana price: " + bananaPrice + " SAR");
// التحقق من وجود البرتقال
if(fruitPrices.containsKey("Orange")) {
System.out.println("Orange is available in the list!");
}
// طباعة عدد العناصر
System.out.println("Number of fruit types: " + fruitPrices.size());
}
}
المخرجات:
Banana price: 3.25 SAR
Orange is available in the list!
Number of fruit types: 3
🆚 مقارنة سريعة: HashMap vs ArrayList
| الميزة | HashMap | ArrayList |
|---|---|---|
| أساس التخزين | المفتاح (Key) | الفهرس (Index) |
| سرعة البحث | سريع جداً (باستخدام المفتاح) | بطيء (يجب البحث عنصراً عنصراً) |
| الترتيب | لا يوجد ترتيب محدد | عناصر مرتبة حسب الفهرس |
🎯 خلاصة الدرس
تعلمنا في هذا الدرس الأساسيات المتينة لـ HashMap في جافا:
HashMapتخزن البيانات على شكل أزواج مفتاح-قيمة.- المفتاح يجب أن يكون فريداً، بينما يمكن تكرار القيم.
- العمليات الأساسية مثل
put()للإضافة وget()للاسترجاع هي أساس التعامل معها. HashMapمثالية عندما تريد البحث أو الوصول إلى البيانات بسرعة باستخدام مفتاح معروف.
ماذا سنتعلم في الدرس القادم؟
الآن وقد أصبحت تفهم كيفية تخزين البيانات باستخدام المفاتيح في HashMap، حان الوقت لاستكشاف كيفية التعامل مع جميع العناصر المخزنة فيها. في الدرس القادم، سنتعلم كيفية التمرير خلال HashMap باستخدام الحلقات التكرارية مثل for-each لطباعة أو معالجة كل مفتاح وقيمة موجودة. هذا سيمكنك من الاستفادة الكاملة من قوة HashMap في برامجك!
🎓 اختبر نفسك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال