logo

الفرق بين HashMap وTreeMap

جافا خريطة التجزئة و خريطة الشجرة كلاهما فئات إطار عمل مجموعات Java. عادةً ما يعمل تطبيق Java Map كجدول تجزئة مُجمَّع. عندما تصبح الدلاء كبيرة جدًا، فإنها تتحول إلى عقد TreeNodes ، كل منها منظم بشكل مشابه لتلك الموجودة في java.util.TreeMap .

خريطة التجزئة

تنفذ HashMap خريطة، قابلة للاستنساخ و قابل للتسلسل واجهه المستخدم. يمتد AbstractMap فصل. تنتمي إلى java.util طَرد.

  • يحتوي HashMap على قيمة بناءً على المفتاح.
  • قد يحتوي على مفتاح فارغ واحد وقيم فارغة متعددة.
  • لا يحافظ HashMap على الترتيب أثناء التكرار.
  • أنه يحتوي على عناصر فريدة من نوعها.
  • يعمل على مبدأ التجزئة.

خريطة الشجرة

تمتد فئة TreeMap AbstractMap الطبقة وتنفذ NavigableMap , قابل للاستنساخ ، و قابل للتسلسل واجهه المستخدم. TreeMap هو مثال على SortedMap . يتم تنفيذه بواسطة الشجرة ذات اللون الأحمر والأسود، مما يعني أنه يتم فرز ترتيب المفاتيح.

  • يحتوي TreeMap أيضًا على قيمة تعتمد على المفتاح.
  • يتم فرز TreeMap حسب المفاتيح.
  • أنه يحتوي على عناصر فريدة من نوعها.
  • لا يمكن أن يحتوي على مفتاح فارغ ولكن يحتوي على قيم فارغة متعددة.
  • المفاتيح مرتبة تصاعديًا.
  • يقوم بتخزين الكائن في هيكل الشجرة.

أوجه التشابه بين HashMap وTreeMap

    خريطة التجزئةو خريطة الشجرة تنفذ الفصول قابل للاستنساخ و قابل للتسلسل واجهه المستخدم.
  • كلا الفئتين تمتد AbstractMap فصل.
  • الخريطة هي كائن يخزن قيمة المفتاح أزواج. في زوج المفتاح والقيمة، يكون كل مفتاح فريدًا، ولكن قد تكون قيمه فريدة ينسخ .
  • تمثل كلا الفئتين التعيين من مفتاح ل قيم .
  • كلتا الخريطتين ليستا كذلك متزامن .
  • استخدام الخريطة يضع() طريقة إضافة عنصر في الخريطة.
  • يلقي المكرر أ ConcurrentModificationException إذا تم تعديل الخريطة بأي شكل من الأشكال.

الفرق الرئيسي بين HashMap و TreeMap هو:

خريطة التجزئة لا يحافظ على ترتيب التكرار بينما خريطة الشجرة الحفاظ على الطلب باستخدام قارن ب() طريقة أو أ المقارنة تم تعيينه في مُنشئ TreeMap.

يصف الجدول التالي الاختلافات بين HashMap وTreeMap.

أساس خريطة التجزئة خريطة الشجرة
تعريف جافا خريطة التجزئة هو تطبيق قائم على التجزئة لواجهة الخريطة. جافا خريطة الشجرة هو تطبيق قائم على هيكل الشجرة لواجهة الخريطة.
تنفيذ الواجهة تنفذ HashMap خريطة، قابلة للاستنساخ ، و قابل للتسلسل واجهه المستخدم. تنفذ TreeMap NavigableMap، Cloneable ، و قابل للتسلسل واجهه المستخدم.
المفاتيح/القيم الفارغة يتيح HashMap أ أعزب مفتاح فارغ و عديد القيم الخالية. لا يسمح TreeMap باطل مفاتيح ولكن يمكن أن يكون عديد القيم الخالية.
غير متجانسة تجانسا يسمح HashMap بالعناصر غير المتجانسة لأنه لا يقوم بالفرز على المفاتيح. يسمح TreeMap بقيم متجانسة كمفتاح بسبب الفرز.
أداء HashMap هو أسرع من TreeMap لأنه يوفر أداء ثابت الوقت وهو O(1) للعمليات الأساسية مثل get() و put(). TreeMap هو بطيء بالمقارنة مع HashMap لأنه يوفر أداء O(log(n)) لمعظم العمليات مثل add() وremove() وcontains().
هيكل البيانات تستخدم فئة HashMap جدول التجزئة . يستخدم TreeMap داخليًا ملف أحمر-أسود شجرة، وهي شجرة بحث ثنائية ذاتية التوازن.
طريقة المقارنة يستخدم يساوي () طريقة هدف فئة لمقارنة المفاتيح. تتجاوزها طريقة يساوي () لفئة الخريطة. يستخدم قارن ب() طريقة لمقارنة المفاتيح
وظائف تحتوي فئة HashMap على وظائف أساسية فقط مثل الحصول على ()، وضع ()، مجموعة المفاتيح () ، إلخ. . فئة TreeMap غنية بالوظائف، لأنها تحتوي على وظائف مثل: tailMap ()، firstKey ()، lastKey ()، pollFirstEntry ()، pollLastEntry () .
ترتيب العناصر لا يحتفظ HashMap بأي ترتيب. يتم فرز العناصر في النظام الطبيعي (تصاعدي).
الاستخدامات يجب استخدام HashMap عندما لا نطلب زوجًا من القيمة الرئيسية بترتيب مفروز. يجب استخدام TreeMap عندما نطلب زوجًا من القيمة الرئيسية بترتيب مفروز (تصاعدي).

مثال على HashMap مقابل TreeMap

في المثال التالي، يمكننا ملاحظة أن عناصر HashMap مرتبة بشكل عشوائي بينما يتم ترتيب عناصر TreeMap بترتيب تصاعدي.

 import java.util.Map; import java.util.HashMap; import java.util.TreeMap; public class HashMapVsTreeMapExample { public static void main(String args[]) { /*------------HashMap implementation----------------*/ Map hm=new HashMap(); //adding elements to the HashMap hm.put(9, 'Red'); hm.put(12, 'Black'); hm.put(6, 'Green'); hm.put(19, 'White'); System.out.println('HashMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: hm.entrySet()) { //getting keys and values using method System.out.println(entry.getKey() + ' = ' +entry.getValue()); } /*------------TreeMap implementation----------------*/ Map tm=new TreeMap(); //adding elements to the TreeMap tm.put(9, 'Red'); tm.put(12, 'Black'); tm.put(6, 'Green'); tm.put(19, 'White'); System.out.println('TreeMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: tm.entrySet()) { //getting keys and values using method //prints list in sorted order System.out.println(entry.getKey() + ' = ' +entry.getValue()); } } } 

انتاج:

الفرق بين HashMap وTreeMap