הבדל מפתח – TreeSet לעומת HashSet
רוב שפות התכנות תומכות במערכים. זהו מבנה נתונים המשמש לאחסון מספר אלמנטים מאותו סוג נתונים. אם יש מערך שהוכרז עבור שישה אלמנטים, אז לא ניתן להשתמש בו לאחסון עשרה אלמנטים. לכן, מערכים אינם דינמיים ואינם יכולים לשנות את גודל המערך לאחר הכרזתו. שפות תכנות כגון Java תומכות באוספים המשמשים לאחסון נתונים באופן דינמי. אוספים תומכים בפעולות כגון הוספת אלמנטים ומחיקת אלמנטים. ישנם מספר ממשקים ומחלקות בהיררכיית האוסף. ממשק הבסיס הוא ממשק האוסף.סט הוא ממשק שמרחיב את ממשק האוסף. זה לא מאפשר כפילות. ה-TreeSet וה-HashSet הם שני מחלקות בהיררכיית האוסף ושניהם מיישמים את ממשק ה-Set. TreeSet היא מחלקה המיישמת את ממשק ה-Set והיא משמשת לאחסון אלמנטים ייחודיים בסדר עולה. HashSet היא מחלקה המיישמת את ממשק ה-Set והיא משמשת לאחסון אלמנטים ייחודיים באמצעות מנגנון ה-Hashing. ההבדל העיקרי בין TreeSet ל-HashSet הוא ש-TreeSet מאחסן את האלמנטים בסדר עולה בעוד שה-HashSet לא מאחסן את האלמנטים בסדר עולה. גם TreeSet וגם HashSet מאחסנים רק אלמנטים ייחודיים.
מהו TreeSet?
מחלקה TreeSet מיישמת ממשק NavigableSet. ממשק NavigableSet מרחיב את ממשקי SortedSet, Set, Collection ו-Iterable בסדר היררכי. TreeSet תמיד שומר על הסדר העולה. אם האלמנטים הוכנסו בסדר B, A, C, הם יאוחסנו כ-A, B, C. ניתן להשתמש בשיטות כגון add (), remove () עם TreeSet object.ניתן להשתמש בשיטת ההוספה כדי להוסיף אלמנט. שיטת ההסרה משמשת להסרת אלמנט מהאוסף. אלו כמה שיטות שניתן להשתמש בהן עם TreeSet.
איור 01: תוכנית עם TreeSet
לפי התוכנית לעיל, נוצר אובייקט מסוג TreeSet. רכיבי הנתונים של המחרוזת מתווספים לאובייקט זה באמצעות שיטת ה-add. סדר הנתונים המוכנסים הוא A, D, A, B, C, D. באמצעות האיטרטור, הערכים המאוחסנים מודפסים על המסך. הפלט הוא A, B, C, D. למרות שיש שתי אותיות A ושתי אותיות D, הפלט מציג את אחת A ואחת D כל אחת. לכן, ה-TreeSet מאחסן אלמנטים ייחודיים. אין סדר הכנסה מסוים אבל כשצופים בפלט, ניתן לראות שה-TreeSet שומר על הסדר העולה של האלמנטים.
מהו HashSet?
מחלקת HashSet מרחיבה את מחלקת AbstractSet המיישמת Set Interface. ממשק הסט יורש ממשקי Collection ו-Iterable בסדר היררכי. ב-HashSet, אין ערובה שהאלמנטים ישמרו על הסדר העולה ועל הסדר שהוכנס. אם הסדר שהוכנס היה A, B, C, הערכים עשויים להיות מאוחסנים כ-C, A, B. סדר אחסון יכול להיות גם A, B, C אך אין ערובה שהסדר שהוכנס או הסדר העולה נשמר.
איור 02: תוכנית עם HashSet
לפי התוכנית לעיל, נוצר אובייקט מסוג HashSet. רכיבי הנתונים של המחרוזת מתווספים לאובייקט זה באמצעות שיטת ה-add. סדר הנתונים המוכנסים הוא L, R, M, M, R, L. באמצעות האיטרטור, הערכים המאוחסנים מודפסים על המסך.הפלט הוא R L M. למרות שמכל אחת יש שתי אותיות L, R ו-M, רק אות אחת מכל אחת מוצגת. לכן, ה-HashSet מאחסן אלמנטים ייחודיים. כאשר מתבוננים בפלט, ניתן לראות שאין סדר עולה או שהסדר שהוכנס נשמר.
מהם הדמיון בין TreeSet ל-HashSet?
- הן TreeSet והן HashSet הן מחלקות שייכות להיררכיית האוסף.
- גם TreeSet וגם HashSet מאחסנים רק אלמנטים ייחודיים.
- ניתן להשתמש גם ב-TreeSet וגם ב-HashSet כדי לאחסן ולתפעל אלמנטים רבים.
- גם TreeSet וגם HashSet לא שומרים על הסדר שהוכנס.
מה ההבדל בין TreeSet ל-HashSet?
TreeSet לעומת HashSet |
|
TreeSet הוא מחלקה בהיררכיית האוסף המשמשת לאחסון אלמנטים ייחודיים בסדר עולה. | HashSet הוא מחלקה בהיררכיית האוסף המשמשת לאחסון אלמנטים ייחודיים באמצעות מנגנון ה-Hashing. |
אחסון רכיבים | |
TreeSet מאחסן את האלמנטים בסדר עולה. | HashSet אינו מאחסן את האלמנטים בסדר עולה. |
סיכום – TreeSet לעומת HashSet
בתכנות, נדרש לאחסן רכיבי נתונים באופן דינמי. שפות תכנות כגון Java תומכות באוספים כדי להשיג משימה זו. ישנם מספר ממשקים ומחלקות בהיררכיית האוסף. ה-TreeSet וה-HashSet הם שני מחלקות בהיררכיית האוסף. שניהם מיישמים את ממשק ה-Set. TreeSet היא מחלקה המיישמת את ממשק ה-Set והיא משמשת לאחסון אלמנטים ייחודיים בסדר עולה. HashSet היא מחלקה המיישמת את ממשק ה-Set והיא משמשת לאחסון אלמנטים ייחודיים באמצעות מנגנון ה-Hashing.ההבדל בין TreeSet ל-HashSet הוא ש-TreeSet מאחסן את האלמנטים בסדר עולה בעוד שה-HashSet לא מאחסן את האלמנטים בסדר עולה. מאמר זה דן בהבדל בין TreeSet ל-HashSet.