الفرق بين HashMap و LinkedHashMap في جافا
المحتوى
HashMap و LinkedHashMap هي الفصول الدراسية ، متشابهة تمامًا مع بعضها البعض وتستخدم لإنشاء خريطة. تقوم فئة HashMap بتوسيع فئة AbstractMap لاستخدام جدول تجزئة لتخزين العناصر في الخريطة. تحافظ فئة LinkedHashMap على الإدخالات الموجودة في الخريطة بناءً على ترتيب الإدراج. الميزة التي تميز HashMap و LinkedHashMap عن بعضها البعض هي تلك خريطة التجزئة لا يحتفظ بترتيب الإدخالات المخزنة في الخريطة. من ناحية أخرى، LinkedHashMap يستخدم بنية بيانات مختلطة للحفاظ على ترتيب الإدخالات التي تم إدراجها فيها. في مخطط المقارنة أدناه ، قمت باستكشاف بعض الاختلافات الأخرى بين HashMap و LinkedHashMap ، فقط ألقِ نظرة.
- رسم بياني للمقارنة
- تعريف
- الاختلافات الرئيسية
- خاتمة
رسم بياني للمقارنة
أساس للمقارنة | خريطة التجزئة | LinkedHashMap |
---|---|---|
الأساسي | لا يتم الاحتفاظ ترتيب الإدراج في HashMap. | يتم الاحتفاظ ترتيب الإدراج في LinkedHashMap. |
هيكل البيانات | يستخدم HashMap HashTable لتخزين الخرائط. | يستخدم LinkedHashMap HashTable إلى جانب Linked List لتخزين الخريطة. |
يمتد تطبيقات / | HashMap يمتد AbstractMap وتنفذ واجهة خريطة. | LinkedHashMap يمتد Hashmap. |
الإصدار | تم تقديم HashMap في الإصدار JDK 2.0. | تم تقديم LinkedHashMap في JDK 4.0. |
تكاليف غير مباشرة | أقل نسبيا الحمل. | مقدار حمل أكبر نسبياً لأنه يتعين عليه الحفاظ على ترتيب إدخالات الخريطة. |
تعريف HashMap
HashMap هي فئة يتم استخدامها لإنشاء خريطة. انها تنفذ خريطة واجهه المستخدم. كما يمتد AbstractMap فئة بحيث يمكن استخدام جدول التجزئة لتخزين الإدخالات في الخريطة. إدخالات الخريطة لا يتم الاحتفاظ ترتيب الإدراج الإدخالات في 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.ln (hm) ؛ / * output * / {Vijay = 250 ، Jonny = 150 ، Ajay = 275 ، Jordan = 200} كما في التعليمة البرمجية أعلاه ، يمكنك أن ترى أنني قد أنشأت كائنًا من HashMap وأضفت الإدخالات باستخدام طريقة puts ، وعندما أقوم بتحرير كائن HashMap ، لا يتم إدخالات الإدخالات بالترتيب الذي تم إدراجها به. وبالتالي ، لا يمكنك التظاهر بأن ترتيب الإدخالات في HashMap سيعود. يستخدم HashMap جميع أساليب واجهة الخريطة وفئة AbstractMap ولا يقدم أي طريقة جديدة ؛ لديها بناة الخاصة بها. السعة الافتراضية لخريطة التجزئة هي 16 ونسبة التعبئة الافتراضية هي 0.75. LinkedHashMap هو أيضًا استخدام صفي لإنشاء خريطة. LinkedHashMap يمتد خريطة التجزئة فئة وقدم في وقت لاحق إلى HashMap في JDK الإصدار 4.0. أن تكون الفئة الفرعية من فئة HashMap LinkedHashMap هي تمامًا فئة HashMap بما في ذلك المنشئات والأساليب. ولكن ، LinkedHashMap يختلف بمعنى أنه يحافظ على ترتيب إدراج الإدخالات في الخريطة. بنية البيانات المستخدمة بواسطة LinkedHashMap لتخزين الخريطة قائمة مرتبطة و جدول التجزئة. بالإضافة إلى الطرق الموروثة بواسطة HashMap ، تقدم LinkedHashMap طريقة واحدة جديدة removeEldestEntry (). تستخدم هذه الطريقة لإزالة أقدم إدخال في الخريطة. السعة الافتراضية لـ LinkedHashMap هي 16 ، ونسبة التعبئة الافتراضية هي 0.75 والتي تشبه أيضًا فئة HashMap.
تعريف LinkedHashMap
- الفرق الأكثر أهمية هو أن ترتيب الإدراج من HashMap هو لا الحفاظ عليها في حين أن ترتيب الإدراج لـ LinkedHashMap هو محفوظ.
- بنية البيانات المستخدمة بواسطة HashMap لتخزين عناصر الخريطة هي جدول هاش. من ناحية أخرى ، بنية البيانات المستخدمة من قبل LinkedHashMap هي قائمة مرتبطة و جدول هاش.
- تمتد فئة HashMap AbstractMap الطبقة وتنفذ خريطة واجهه المستخدم. ومع ذلك ، فإن فئة LinkedHashMap هي فئة فرعية من خريطة التجزئة فئة أي فئة LinkedHashMap يمتد فئة HashMap.
- وقدم HashMap الطبقة في JDK 2.0 الإصدار. تم تقديم فئة LinkedHashMap لاحقًا JDK 4.0 الإصدار.
- تتميز فئة LinkedHashMap نسبياً بأكثر من HashMap حيث يجب عليها الحفاظ على ترتيب العناصر المدرجة في الخريطة.
خاتمة:
يجب استخدام LinkedHashMap فقط عندما نشعر بالقلق إزاء تسلسل العناصر المدرجة في الخريطة.