Avatar ·

ما الفرق بين HashMap و LinkedHashMap و TreeMap في Java؟

مرحبًا بالجميع! لقد بدأت للتو في تعلم Java وواجهت مشكلة عند العمل مع الخرائط (Map). هناك ثلاثة تطبيقات رئيسية: HashMap و LinkedHashMap و TreeMap. لقد قرأت الوثائق، لكنني لم أفهم تمامًا متى يجب استخدام أي منها.

على سبيل المثال، لدي مهمة: أحتاج إلى تخزين قائمة من الطلاب مع معرفاتهم (المفتاح — Integer، القيمة — String). لقد كتبت هذا الكود:

Map<Integer, String> students = new HashMap<>();
students.put(3, "آنا");
students.put(1, "إيفان");
students.put(2, "ماريا");
System.out.println(students);

كان الإخراج غير مرتب: {1=إيفان, 2=ماريا, 3=آنا}. لماذا لا يتطابق الترتيب مع ترتيب الإدراج؟ وماذا سيحدث إذا استبدلت HashMap بـ LinkedHashMap أو TreeMap؟

أيضًا، سمعت أن لديهم أداءً مختلفًا. في أي الحالات يكون HashMap أسرع، ومتى يكون من الأفضل استخدام TreeMap؟ وكيف يعملون مع المفاتيح null؟

سأكون ممتنًا لشرح مفصل مع أمثلة، حتى أتمكن من فهم ذلك بشكل أفضل.