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

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

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

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

// צור מפת עץ חדשה
מפת עץ לקוחות = חָדָשׁ מפת עץ();

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

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

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

// לאכלס מפת עץ
customers.put(105, "ג'סיקה ג'ונס");
customers.put(102, "מארק וויליאמס");
customers.put(104, "פיל בלייר");
customers.put(101, "קים בראון");
customers.put(103, "ג'ים ריילי");
instagram viewer

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

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

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

// הצג את כל פריטי מפת העץ כאובייקט
System.out.println (לקוחות);

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

{101=קים בראון, 102=מארק וויליאמס, 103=ג'ים ריילי, 104=פיל בלייר, 105=ג'סיקה ג'ונס}

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

// הצג את כל הפריטים עם איטרטור
ל (כְּנִיסָה לקוח: customers.entrySet()) {
System.out.println("Key: " + customer.getKey() + " Value: " + customer.getValue());
}

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

מפתח: 101 ערך: קים בראון
מפתח: 102 ערך: מארק וויליאמס
מפתח: 103 ערך: ג'ים ריילי
מפתח: 104 ערך: פיל בלייר
מפתח: 105 ערך: ג'סיקה ג'ונס

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

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

// החלף ערך קיים
customers.replace(101"קים סמית'");
System.out.println (לקוחות);

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

{101=קים סמית', 102=מארק וויליאמס, 103=ג'ים ריילי, 104=פיל בלייר, 105=ג'סיקה ג'ונס}

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

// החלף ערך קיים
customers.replace(103"ג'ים ריילי", "מישל נואה");
System.out.println (לקוחות);

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

{101=קים בראון, 102=מארק וויליאמס, 103=מישל נואה, 104=פיל בלייר, 105=ג'סיקה ג'ונס}

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

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

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

// הסר פריט
customers.remove(104);
System.out.println (לקוחות);

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

{101=קים סמית', 102=מארק וויליאמס, 103=מישל נואה, 105=ג'סיקה ג'ונס}

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

מפת העץ לעומת מחלקת HashMap Java

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

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