כיצד להשתמש במבנה הנתונים של Java TreeMap

כיצד להשתמש במבנה הנתונים של Java TreeMap

מחלקת Java TreeMap מאחסנת נתונים במבנה עץ באמצעות ממשק מפה. מחלקה זו מרחיבה את המחלקה AbstractMap וכמו מחלקת האב שלה, ל-TreeMap יש שני פרמטרים מסוג. אחד מפרמטרי הסוג שלו מייצג את המפתחות ב-TreeMap, בעוד השני מייצג את הערכים.





מבנה הנתונים של TreeMap מאחסן צמדי מפתח-ערך ומאפשר לך לבצע פעולות CRUD על נתונים אלה.





כיצד ליצור TreeMap ב-Java

למחלקה TreeMap יש ארבעה בנאים שבהם אתה יכול להשתמש כדי ליצור אובייקט TreeMap חדש. קונסטרוקטור ברירת המחדל הוא הפופולרי ביותר מבין הארבעה. בנאי זה לא לוקח ארגומנטים ומייצר מפת עץ ריקה.





// Create a new tree map 
TreeMap<Integer,String> customers = new TreeMap<Integer,String>();

הקוד שלמעלה יוצר מפת עץ ריקה בשם לקוחות .

אכלוס מבנה הנתונים של TreeMap

ה לָשִׂים() השיטה מוסיפה פריט לאובייקט TreeMap. צריך שני ארגומנטים - מפתח והערך שלו. ניתן להוסיף פריטים למפת העץ בכל סדר אקראי ומבנה הנתונים יאחסן אותם בסדר עולה, לפי המפתחות שלהם.



// Populate a tree map 
customers.put(105, "Jessica Jones");
customers.put(102, "Mark Williams");
customers.put(104, "Phil Blair");
customers.put(101, "Kim Brown");
customers.put(103, "Jim Riley");

הקוד למעלה מוסיף חמישה לקוחות, בסדר אקראי, למפת עץ הלקוחות.

הצגת פריטים במפת עץ

המחלקה TreeMap מאחסנת את הנתונים שלה באובייקט. אז כדי לראות את כל הפריטים במפת עץ אתה יכול פשוט להדפיס את אובייקט מפת העץ למסוף:





// View all tree map items as an object 
System.out.println(customers);

הקוד שלמעלה מדפיס את הפלט הבא למסוף:

{101=Kim Brown, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}

שימו לב שהאובייקט שלמעלה מציג את הפריטים בסדר עולה. ניתן גם להציג כל פריט ואת המפתח המתאים לו באמצעות Java for loop .





// View all items with an iterator 
for (Entry<Integer, String> customer : customers.entrySet()) {
System.out.println("Key: " + customer.getKey() + " Value: " + customer.getValue());
}

הקוד שלמעלה מדפיס את הפלט הבא למסוף:

Key: 101 Value: Kim Brown 
Key: 102 Value: Mark Williams
Key: 103 Value: Jim Riley
Key: 104 Value: Phil Blair
Key: 105 Value: Jessica Jones

עדכון פריטים במפת עץ

מחלקת TreeMap מאפשרת לך לעדכן פריט קיים באמצעות ה החלף() שיטה. ישנן שתי שיטות החלפה. השיטה הראשונה לוקחת מפתח קיים ואת הערך החדש אליו רוצים למפות את המפתח הקיים.

// Replace existing value 
customers.replace(101,"Kim Smith");
System.out.println(customers);

הקוד למעלה מדפיס את האובייקט הבא במסוף:

{101=Kim Smith, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}

כמו שאתה רואה קים בראון עכשיו קים סמית' . שיטת replace() השנייה לוקחת מפתח קיים, את הערך הנוכחי של המפתח ואת הערך החדש שברצונך למפות למפתח.

// Replace existing value 
customers.replace(103,"Jim Riley", "Michelle Noah");
System.out.println(customers);

הקוד למעלה מדפיס את האובייקט הבא במסוף:

למה הטלפון שלי לא נדלק
{101=Kim Brown, 102=Mark Williams, 103=Michelle Noah, 104=Phil Blair, 105=Jessica Jones}

באובייקט למעלה מישל נועה מחליף ג'ים ריילי .

מחיקת פריטים ממפת העץ

אם ברצונך להסיר פריט בודד ממפת העץ, ה- לְהַסִיר() השיטה היא האפשרות היחידה שלך. זה לוקח את המפתח המשויך לפריט שברצונך להסיר ומחזיר את הערך שנמחק.

// Remove an item 
customers.remove(104);
System.out.println(customers);

הפעלת הקוד למעלה מדפיסה את האובייקט הבא למסוף:

{101=Kim Smith, 102=Mark Williams, 103=Michelle Noah, 105=Jessica Jones}

זֶה כיתת ג'אווה יש גם א ברור() שיטה המאפשרת למחוק את כל הפריטים במפת העץ.

TreeMap לעומת HashMap Java Class

TreeMap ו- HashMap הם שניים משיעורי מפות Java הפופולריים יותר. שניהם מרחיבים את מחלקת AbstractMap. קשר זה נותן למחלקות TreeMap ו- HashMap גישה להרבה מאותן פונקציות.

עם זאת, ישנם כמה הבדלים ראויים לציון בין שתי מחלקות מפות אלה. TreeMap משתמש ביישום עץ אדום-שחור של ממשק המפה, בעוד שה-HashMap משתמש בטבלת hash. HashMap מאפשר לך לאחסן מפתח null יחיד, בעוד TreeMap לא. לבסוף, HashMap מהיר יותר ממפת TreeMap. המהירות האלגוריתמית של הראשון היא O(1) ואילו של האחרון היא O(log(n)).