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

تخزن بنية بيانات TreeMap أزواج القيمة الرئيسية وتسمح لك بتنفيذ عمليات CRUD على هذه البيانات.

كيفية إنشاء TreeMap في جافا

تحتوي فئة TreeMap على أربعة مُنشئين يمكنك استخدامها لإنشاء كائن TreeMap جديد. المُنشئ الافتراضي هو الأكثر شيوعًا من بين الأربعة. هذا المنشئ لا يأخذ أي وسيطات وينشئ خريطة شجرة فارغة.

// إنشاء خريطة متفرعة جديدة
خريطة الشجرة العملاء = الجديد خريطة الشجرة();

يُنشئ الكود أعلاه خريطة شجرية فارغة تسمى عملاء.

ملء بنية بيانات TreeMap

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

// ملء خريطة متفرعة
customers.put (105، "جيسيكا جونز") ؛
customers.put (102، "مارك ويليامز") ؛
customers.put (104، "فيل بلير") ؛
customers.put (101، "كيم براون") ؛
customers.put (103، "جيم رايلي") ؛
instagram viewer

يضيف الرمز أعلاه خمسة عملاء ، بترتيب عشوائي ، إلى خريطة شجرة العملاء.

عرض العناصر في TreeMap

تخزن فئة TreeMap بياناتها في كائن. لذلك ، لمشاهدة جميع العناصر في خريطة متفرعة ، يمكنك ببساطة طباعة كائن الخريطة المتفرعة إلى وحدة التحكم:

// عرض جميع عناصر الخريطة المتفرعة ككائن
System.out.println (العملاء) ؛

يطبع الكود أعلاه الإخراج التالي إلى وحدة التحكم:

{101 = كيم براون ، 102 = مارك ويليامز ، 103 = جيم رايلي ، 104 = فيل بلير ، 105 = جيسيكا جونز}

لاحظ أن الكائن أعلاه يعرض العناصر بترتيب تصاعدي. يمكنك أيضًا عرض كل عنصر والمفتاح المقابل له باستخدام جافا للحلقة.

// عرض جميع العناصر باستخدام مكرر
إلى عن على (دخول customer: customers.entrySet ()) {
System.out.println ("Key:" + customer.getKey () + "القيمة:" + customer.getValue ())؛
}

يطبع الكود أعلاه الإخراج التالي إلى وحدة التحكم:

المفتاح: 101 القيمة: كيم براون
المفتاح: 102 القيمة: مارك ويليامز
المفتاح: 103 القيمة: جيم رايلي
المفتاح: 104 القيمة: فيل بلير
المفتاح: 105 القيمة: جيسيكا جونز

تحديث العناصر في TreeMap

تسمح لك فئة TreeMap بتحديث عنصر موجود باستخدام ملف يحل محل() طريقة. هناك طريقتان للاستبدال. تأخذ الطريقة الأولى مفتاحًا موجودًا والقيمة الجديدة التي تريد تعيين المفتاح الحالي إليها.

// استبدال القيمة الموجودة
customers.replace (101، "كيم سميث") ؛
System.out.println (العملاء) ؛

يطبع الكود أعلاه الكائن التالي في وحدة التحكم:

{101 = كيم سميث ، 102 = مارك ويليامز ، 103 = جيم رايلي ، 104 = فيل بلير ، 105 = جيسيكا جونز}

كما ترون كيم براون هو الآن كيم سميث. تأخذ طريقة replace () الثانية مفتاحًا موجودًا ، والقيمة الحالية للمفتاح ، والقيمة الجديدة التي تريد تعيينها إلى المفتاح.

// استبدال القيمة الموجودة
customers.replace (103، "جيم رايلي" ، "ميشيل نوح") ؛
System.out.println (العملاء) ؛

يطبع الكود أعلاه الكائن التالي في وحدة التحكم:

{101 = كيم براون ، 102 = مارك ويليامز ، 103 = ميشيل نوح ، 104 = فيل بلير ، 105 = جيسيكا جونز}

في الكائن أعلاه ميشيل نوح يستبدل جيم رايلي.

حذف العناصر من TreeMap

إذا كنت تريد إزالة عنصر واحد من الخريطة المتفرعة ، فإن ملف إزالة() الطريقة هي خيارك الوحيد. يأخذ المفتاح المرتبط بالعنصر الذي تريد إزالته ويعيد القيمة المحذوفة.

// إزالة عنصر
customers.remove (104);
System.out.println (العملاء) ؛

يؤدي تشغيل الكود أعلاه إلى طباعة الكائن التالي إلى وحدة التحكم:

{101 = كيم سميث ، 102 = مارك ويليامز ، 103 = ميشيل نوح ، 105 = جيسيكا جونز}

هذه فئة جافا لديه أيضا صافي() الطريقة التي تسمح لك بحذف جميع العناصر الموجودة في الخريطة المتفرعة.

The TreeMap مقابل. فئة جافا HashMap

تعد TreeMap و HashMap من أكثر فئات خرائط Java شيوعًا. كلاهما يقوم بتمديد فئة AbstractMap. تتيح هذه العلاقة لفئات TreeMap و HashMap الوصول إلى الكثير من الوظائف نفسها.

ومع ذلك ، هناك بعض الاختلافات الجديرة بالملاحظة بين هاتين الفئتين من فئات الخرائط. يستخدم TreeMap تنفيذ الشجرة باللون الأحمر والأسود لواجهة الخريطة ، بينما يستخدم HashMap جدول تجزئة. يسمح لك HashMap بتخزين مفتاح فارغ واحد ، بينما لا يسمح لك TreeMap بذلك. أخيرًا ، تعد HashMap أسرع من TreeMap. السرعة الحسابية للأول هي O (1) بينما الثانية هي O (log (n)).