ההבדל בין HashMap ו- TreeMap בג'אווה

מְחַבֵּר: Laura McKinney
תאריך הבריאה: 2 אַפּרִיל 2021
תאריך עדכון: 13 מאי 2024
Anonim
ההבדל בין HashMap ו- TreeMap בג'אווה - טכנולוגיה
ההבדל בין HashMap ו- TreeMap בג'אווה - טכנולוגיה

תוֹכֶן


HashMap ו- TreeMap הם שיעורי המפה ושניהם מיישמים את ממשק המפה. מפה היא אובייקט המאחסן זוגות ערכי מפתח, כאשר כל מפתח הוא ייחודי, אך יתכנו ערכים כפולים. מחלקת HashMap משתמשת בטבלת ה- hash כמבנה נתונים. ה- TreeMap משתמש בעץ האדום-שחור כמבנה נתונים. ההבדל העיקרי בין HashMap ו- Treemap הוא שה- מפת גיבוב אינו שומר על סדר ההכנסה ואילו, Treemap עושה.

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

  1. טבלת השוואה
  2. הגדרה
  3. הבדלים עיקריים
  4. סיכום

טבלת השוואה

בסיס להשוואהמפת גיבובTreeMap
בסיסי HashMap אינו שומר על סדר הכניסה.TreeMap שומר על סדר ההכנסה.
מבנה נתוניםHashMap משתמש בטבלת Hash כמבנה נתונים בסיסי.TreeMap משתמש בעץ אדום-שחור כמבנה נתונים בסיסי.
מפתחות וערכים אפסיים HashMap מאפשר למפתח Null פעם אחת מהמודעה ערך Null לכל מספר זמן.TreeMap אינו מאפשר מקש Null אך מאפשר לערוך את Null כל מספר זמן.
מרחיב ומיישםHashMap מרחיב את מחלקת AbstractMap ומיישם את ממשק המפה.TreeMap מרחיב את מחלקת AbstractMap ומיישם את ממשק SortedMap ו- NavigableMap.
ביצועיםHashMap פועל מהר יותר.TreeMap בהשוואה ל- HashMap פועל לאט יותר.


הגדרת HashMap

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

סדר ההכנסה ב- HashMap הוא לא נשמר מה שאומר שאובייקט ה- Hashmap לא מחזיר את האלמנטים בסדר שהם הוכנסו. מצד שני, הסדר בו יוחזרו האלמנטים אינו קבוע.

ה מפתח מותר להיות ריק בבת אחת, אבל ערכים יכול להיות ריק בכל עת. ה- HashMap יכול להכיל את ה- הטרוגני אובייקטים למפתחות כמו גם ערכים.

ישנם ארבעה בנאים של HashMap:

HashMap () HashMap (מפה m) HashMap (קיבולת int), HashMap (קיבולת int, float fillRatio)

ה ראשון בנאי יוצר את האובייקט הריק של HashMap. ה שנייה בנאי מאתחל את HashMap באמצעות אלמנטים של Map m. ה שלישית קונסטרוקטור מאתחל את ה- HashMap בקיבולת המסופקת בטיעון. ה רביעי בנאי מאתחל את הקיבולת ואת יחס המילוי של אובייקט HashMap.


ברירת המחדל קיבולת של HashMap הוא 16, וברירת המחדל יחס מילוי של HashMap הוא 0.75.

הגדרת TreeMap

כמו HashMap, TreeMap היא גם כיתת מפה. TreeMap מתארך מפת מופשט כיתה ומכשירים NavigabelMap ו Sorted Map. האובייקטים של TreeMap מאחסן את אלמנטים המפה במבנה העץ. מבנה הנתונים המשמש לאחסון המפה הוא עץ אדום-שחור.

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

ישנם ארבעה בנאים של TreeMap:

TreeMap () TreeMap (משווה <? Super K> comp) TreeMap (מפה <? מרחיב K,? מרחיב V> m) TreeMap (SortedMap sm)

ה ראשון בנאים יוצרים אובייקט ריק מ- TreeMap אשר ימיין בסדר הטבעי את מפתחותיו. ה שנייה הקבלן יצור מפת עץ ריקה שתמיין לפי משווה ס"מ. ה שלישית הקבלן למעלה יצור מפת מפות שתאתחל באמצעות ערכים של מפה M. ה רביעי הקבלן יצור מפת מפות שתאתחל באמצעות הערכים של Sorted Map sm.

ל- Treemap אין שום שיטה חדשה משל עצמה, היא משתמשת בשיטת הממשק NavigableMap ו- SortedMap ובכיתה AbstractMap.

  1. שתי המחלקות משמשות ליצירת אובייקטים של מפות, אך ההבדל הבסיסי בין HashMap ל- Treemap הוא שה- HashMap אינו שומר על סדר הכניסה ואילו ה- Treemap כן.
  2. מבנה הנתונים שמשמש Hashmap לאחסון אלמנטים במפה הוא טבלת החשיש ומבנה הנתונים המשמש את TreeMap לאחסון רכיבי המפה הוא העץ השחור-אדום.
  3. גם הכיתות Hashmap וגם Treemap מרחיבים את כיתת AbstractMap, אך המחלקה HashMap מיישמת את ממשק המפה ואת TreeMap מיישמת ממשק NavigableMap ו- SortedMap.
  4. הערכים יכולים להיות Null בכל מספר זמן בשניהם, אך המפתח רשאי להיות Null רק פעם אחת ב- HashMap ומפתח לעולם לא יכול להיות ב- Treemap.
  5. הביצועים של HashMap הם מהירים יותר, זה לא מבזבז זמן במיון אלמנטים של המפה כפי שעושה TreeMap. מכאן ש- TreeMap מבצע איטי יותר מ- HashMap.

סיכום:

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