HashMap في Java
أنشئ HashMap<String, String> باسم scores، استدعِ scores.put("oak", "leaf");، ثم اطبع scores.get("oak"). ترجم Desk.java ونفّذ java Desk. يجب أن تظهر الشاشة سطرًا واحدًا: leaf. المفتاح "oak" يجد القيمة "leaf". وضع زوج وقراءته بالمفتاح نفسه هو ما تعلّمه هذه الصفحة.
مفتاح يجد قيمة
في صفحة list-methods وصلت إلى القيم برقم الخانة: get(0). يصل HashMap إلى قيمة بمفتاح تختاره أنت. تكتب الزوج بـ put. تقرأ القيمة بـ get ونفس المفتاح. لا خانة صفر في مسار تدريس هذا الدرس — المفتاح هو التسمية.
افتح Desk.java. أبقِ اسم الفئة العامة Desk ليطابق اسم الملف. احذف بقايا أسطر ArrayList وtags.get(0) وtags.size() وtags.remove(0) وأي عرض Rack أو Shelf. تلك تخص صفحات القوائم. احذف أيضًا أي Scanner أو nextLine أو قراءة من لوحة المفاتيح. يجب ألا ينتظر البرنامج الكتابة.
قرب الأعلى، فوق public class Desk، اكتب:
import java.util.HashMap;
هذا الاستيراد يجعل نوع HashMap متاحًا بالاسم القصير. بدونه لا يرى javac الاسم القصير HashMap في هذه الصفحة. اكتب java.util وHashMap بدقة. لا تجعل import java.util.*; شرطًا هنا — استيراد واحد دقيق يكفي.
داخل main أنشئ الخريطة:
HashMap<String, String> scores = new HashMap<String, String>();
النوع الأول داخل الأقواس الزاوية هو نوع المفتاح. الثاني نوع القيمة. كلاهما String في هذه الصفحة ليبقى العرض بالكلمات. الاسم scores هو ما تبقيه في ملف التدريس. استدعاء new HashMap<String, String>() يبني خريطة فارغة. في هذه اللحظة لا تحمل أي زوج.
ضع oak إلى leaf ثم اقرأ oak
استدعِ scores.put("oak", "leaf"); في سطر وحده. الكلمة المقتبسة الأولى هي المفتاح. الثانية هي القيمة. الترتيب داخل put مهم: المفتاح أولًا، القيمة ثانيًا. لا تبدّلهما في الملف الذي تبقيه.
ثم اكتب:
System.out.println(scores.get("oak"));
مرّر نفس المفتاح "oak" إلى get. لا تمرّر "leaf" كوسيط لـ get في الملف المحفوظ — get يطلب المفتاح لا القيمة. لا تكتب scores.get(0) — ذلك شكل القائمة من Rack، لا شكل الخريطة هنا. احفظ قبل الترجمة.
import java.util.HashMap;
public class Desk {
public static void main(String[] args) {
HashMap<String, String> scores = new HashMap<String, String>();
scores.put("oak", "leaf");
System.out.println(scores.get("oak"));
}
}
من المجلد الذي يحوي Desk.java نفّذ javac Desk.java. عندما تتطابق الأقواس والدعامات والأقواس الزاوية والفواصل المنقوطة، لا يكتب javac سطرًا من عنده. ثم نفّذ java Desk — لا java Desk.java ولا java HashMap. احذف نهاية .java من أمر التشغيل. ابدأ الفئة التي تحمل main.
يجب أن يطبع البرنامج سطرًا ويتوقف: leaf. لا يطلب منك الكتابة. إذا انتظرت الطرفية إدخال لوحة المفاتيح، فما زال استدعاء nextLine من تمرين أقدم في أحد الملفات. احذف ذلك الاستدعاء وأبقِ إنشاء HashMap وسطر put وSystem.out.println(scores.get("oak"));.
امشِ التشغيل مرة. تبدأ Java من Desk.main. الاستيراد قد سمّى أي HashMap تقصد. سطر new يبني خريطة فارغة. يخزّن put الزوج oak → leaf. يعيد استدعاء get("oak") القيمة leaf. يكتب سطر الطباعة تلك الكلمة. تظهر الشاشة leaf. لا يجب أن يطبع شيء آخر. إذا رأيت oak فقد طبعت المفتاح يدويًا أو استخدمت وسيط get خاطئًا. إذا رأيت 2 أو [pine] فما زال عرض size أو remove من Rack يعمل — انتقل إلى java Desk.
إذا قال javac إنه لا يجد HashMap، فسطر الاستيراد ناقص أو مكتوب خطأ أو موضوع بعد public class Desk. انقل import java.util.HashMap; فوق سطر الفئة. إذا استدعيت get("oak") قبل أي put، قد تطبع الشاشة null لأن ذلك المفتاح لم يُخزَّن. أبقِ put قبل get في هذه الصفحة. إذا كتبت scores.put(oak, leaf); بلا علامات اقتباس، يعامل javac الكلمات كأسماء غير موجودة. أبقِ الاقتباس حول المفتاح والقيمة.
طباعة الخريطة كاملة كنظرة ثانية
ملف Desk ثانٍ يطبع كائن الخريطة بعد نفس put. ذلك يُظهر شكل الزوج الذي تستخدمه Java عندما تطبع الخريطة نفسها.
import java.util.HashMap;
public class Desk {
public static void main(String[] args) {
HashMap<String, String> scores = new HashMap<String, String>();
scores.put("oak", "leaf");
System.out.println(scores);
}
}
ترجم ونفّذ ذلك الملف الثاني بنفس الطريقة. تظهر الشاشة {oak=leaf} — مفتاح، علامة يساوي، قيمة، داخل أقواس معقوفة. هذا الشكل مفيد لتأكيد أن الزوج داخل الخريطة. مسار التدريس لشاشة الاختبار leaf ما زال الملف الأول مع get("oak"). استخدم طباعة الخريطة كاملة فقط لرؤية الزوج المخزَّن. لا تخلط get(0) في أي من ملفي Desk — الخرائط لا تستخدم أرقام خانات القائمة في هذه الصفحة.
إذا ظهرت الشاشة [] أو [oak, pine] فما زال عرض ArrayList يعمل. ابقَ مع HashMap وjava Desk.
مقارنة مع get القائمة ومع put
في صفحة list-methods احتاج get(0) إلى فهرس خانة بعد add. في هذه الصفحة يحتاج get("oak") إلى سلسلة المفتاح بعد put. ملف Rack متبقٍ يطبع فقط tags.get(0) درس مختلف. لهذه الصفحة أبقِ في Desk استدعاء put("oak", "leaf") وget("oak").
يمكنك تخزين أزواج أكثر بنداءات put إضافية. هذه الصفحة تبقي زوجًا واحدًا ليسهل رؤية المفتاح والقيمة المطبوعة. صفحة لاحقة — HashSet — تخزّن قيمًا فريدة دون قصة زوج مفتاح-وقيمة منفصلة. ابقَ هنا مع put وget في HashMap.
عندما تبقى ملفات Rack.java أو Shelf.java القديمة قريبة، اتركها أو احذفها فقط إن أربكت أي فئة تشغّل. نفّذ java Desk بعد ترجمة ملف HashMap لهذا الدرس.
ما يبقى لـ HashSet
تفتح هذه الصفحة تخزين المفتاح-والقيمة بـ HashMap. الصفحة التالية تفتح مجموعة قيم فريدة بـ HashSet. ابقَ هنا مع put وget على الخريطة. لا تجعل add الخاص بالمجموعة شرطًا في هذه الصفحة؛ هدف الدرس هو المفتاح الذي يجد القيمة وشاشة leaf.
قبل HashSet
يمكنك استيراد java.util.HashMap، وإنشاء HashMap<String, String> scores، واستدعاء scores.put("oak", "leaf");، ثم طباعة scores.get("oak"). ترجم Desk.java ونفّذ java Desk. تظهر الشاشة leaf. وجد المفتاح القيمة. الصفحة التالية هي HashSet، حيث تخزّن قيمًا فريدة دون ربط كل واحدة بمفتاح منفصل على مسار ذلك الدرس.
أبقِ الاستيراد فوق الفئة. أبقِ put قبل get. أبقِ المفتاح "oak" نفسه في النداءين. هذه العادات الثلاث نقطة تفتيش هذه الصفحة قبل الانتقال. عندما تظهر الشاشة leaf بعد get("oak")، أنجز HashMap عمله لهذا الدرس وأنت جاهز للموضوع التالي.
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى