موصى به, 2021

اختيار المحرر

الفرق بين HashMap و LinkedHashMap في جاوة

HashMap و LinkedHashMap هي الفصول ، تشبه إلى حد بعيد بعضها البعض وتستخدم لإنشاء الخريطة. تمد فئة HashMap فئة AbstractMap لاستخدام جدول تجزئة لتخزين العناصر في الخريطة. تحتفظ فئة LinkedHashMap بالإدخالات الموجودة في الخريطة وفقًا لترتيب الإدراج الخاص بها. الميزة التي تميز HashMap و LinkedHashMap عن بعضها البعض هي أن Hashmap لا تحتفظ بترتيب الإدخالات المخزنة في الخريطة. من ناحية أخرى ، يستخدم LinkedHashMap بنية بيانات مختلطة للحفاظ على ترتيب الإدخالات التي تم إدراجها بها. في الرسم البياني مقارنة أدناه استكشفت بعض الاختلافات الأخرى بين HashMap و LinkedHashMap فقط إلقاء نظرة.

رسم بياني للمقارنة

أساس للمقارنةخريطة التجزئةLinkedHashMap
الأساسيةلا يتم الاحتفاظ بترتيب الإدراج في HashMap.يتم الاحتفاظ ترتيب الإدراج في LinkedHashMap.
هيكل البياناتيستخدم HashMap HashTable لتخزين الخرائط.يستخدم LinkedHashMap HashTable مع قائمة مرتبطة لتخزين خريطة.
يمتد / تطبيقاتHashMap يمتد AbstractMap وينفذ واجهة الخريطة.LinkedHashMap يمتد Hashmap.
الإصدارتم تقديم HashMap في JDK 2.0.تم تقديم LinkedHashMap في JDK 4.0.
تكاليف غير مباشرةنسبيا أقل من النفقات العامة.مزيد من النفقات العامة نسبيا لأنه يجب الحفاظ على ترتيب إدخالات الخريطة.

تعريف هاشماب

HashMap هو فئة يتم استخدامها لإنشاء خريطة. انها تنفذ واجهة الخريطة . كما أنه يوسع فئة AbstractMap بحيث يمكنه استخدام جدول تجزئة لتخزين الإدخالات في الخريطة. إدخالات الخريطة هي زوج حيث يرتبط كل مفتاح بالقيمة. يتم استخدام المفتاح في الإدخال لاسترداد القيمة ومن ثم ، يجب أن يكون المفتاح فريدًا. لهذا السبب لا يتم السماح بالمفاتيح المكررة في HashMap. ولكن قد يكون المفتاح في كل إدخال من الخريطة بنوع مختلف أي أن مفاتيح الخريطة التي تم إنشاؤها بواسطة HashMap يمكن أن تكون غير متجانسة. بنية البيانات المستخدمة من قبل HashMap لتخزين الخريطة هي جدول تجزئة.

لا يتم الاحتفاظ بترتيب الإدراج الخاص بالإدخالات في HashMap. يعتمد إدراج الإدخالات في الخريطة التي تم إنشاؤها باستخدام HashMap على رمز التجزئة المحسوب بواسطة المفاتيح في المدخلات. إذا قمت عن طريق الخطأ بإدخال مفتاح مكرر في HashMap ، فستحل محل القيمة السابقة لهذا المفتاح بالقيمة الجديدة المقترحة وستُرجع القيمة القديمة. إذا لم يتم استخدام أي مفتاح مكرر ولم يتم إجراء استبدال ، فسيعود المفتاح دائمًا إلى Null. دعونا نرى كيفية إضافة الإدخالات إلى خريطة التجزئة مع المثال التالي.

 Hashmap hm = New Hashmap ()؛ hm.put ("Ajay"، 275)؛ hm.put ("Vijay"، 250)؛ hm.put ("Jonny"، 150)؛ hm.put ("Jordan"، 200)؛ System.out.println (hm)؛ / * output * / {Vijay = 250، Jonny = 150، Ajay = 275، Jordan = 200} 

كما في التعليمة البرمجية أعلاه ، يمكنك مشاهدة أني قمت بإنشاء كائن من HashMap وقمت بإضافة الإدخالات باستخدام الأسلوب puts وعندما قمت بطباعة كائن HashMap ، لا تتم طباعة الإدخالات بالترتيب الذي تم إدراجه فيه. ومن ثم ، لا يمكنك التظاهر بإرجاع ترتيب الإدخالات في HashMap. يستخدم HashMap كافة أساليب واجهة الخريطة و Class AbstractMap ولا يقدم أي طريقة جديدة؛ لديها الصانعين الخاصة بها. السعة الافتراضية لخريطة التجزئة هي 16 ونسبة الملء الافتراضية هي 0.75 .

تعريف LinkedHashMap

LinkedHashMap هو أيضا استخدام فئة لإنشاء الخريطة. LinkedHashMap يمتد فئة HashMap وقدم في وقت لاحق إلى HashMap في JDK الإصدار 4.0. كونه فئة فرعية من فئة HashMap LinkedHashMap هو نفس فئة HashMap بما في ذلك الصانعين والأساليب. ولكن ، يختلف LinkedHashMap بمعنى أنه يحافظ على ترتيب إدخال الإدخالات في الخريطة. يتم ربط بنية البيانات المستخدمة بواسطة LinkedHashMap لتخزين الخريطة وقائمة التجزئة .

بالإضافة إلى الأساليب الموروثة بواسطة HashMap ، يقدم LinkedHashMap طريقة جديدة واحدة يتم إزالةEldestEntry () . يتم استخدام هذه الطريقة لإزالة أقدم إدخال في الخريطة. السعة الافتراضية لـ LinkedHashMap هي 16 ، ونسبة الملء الافتراضية هي 0.75 والتي تشبه أيضًا فئة HashMap.

الاختلافات الرئيسية بين HashMap و LinkedHashMap في جاوة

  1. والفرق الأكثر أهمية هو أن ترتيب الإدراج في HashMap لا يتم الحفاظ عليه بينما يتم الاحتفاظ بترتيب الإدراج الخاص بـ LinkedHashMap.
  2. بنية البيانات المستخدمة من قبل HashMap لتخزين عناصر الخريطة هي Hashtable . من ناحية أخرى ، فإن بنية البيانات المستخدمة بواسطة LinkedHashMap هي قائمة مرتبطة و Hashtable .
  3. فئة HashMap يمتد Class AbstractMap وينفذ واجهة الخريطة . ومع ذلك ، فئة LinkedHashMap هي فئة فرعية من فئة HashMap أي فئة LinkedHashMap يمتد فئة HashMap.
  4. تم تقديم فئة HashMap في الإصدار 2.0 من JDK . تم تقديم فئة LinkedHashMap لاحقًا في الإصدار 4.0 من JDK .
  5. يحتوي فئة LinkedHashMap نسبياً على مقدار حمل أعلى من HashMap حيث أنه يحتفظ بترتيب العناصر المدرجة في الخريطة.

استنتاج:

يجب استخدام LinkedHashMap فقط عندما نشعر بالقلق إزاء تسلسل العناصر المدرجة في الخريطة.

Top