לפעמים כאשר אנחנו מתעסקים באוסף של נתונים, חשוב לנו, מסיבות כאלה ואחרות, שהוא תמיד יהיה ממוין.
לדוגמה, מיון נתונים לפי תאריך, או מיון של שמות אלפא-ביתית, או מיון עובדים לפי השכר שלהם.
אחת האפשרויות היא להשתמש במבנה נתונים שנקרא
SortedList
מבנה זה מזכיר Dictionary (ולכן גם מממש IDictionary):
|
|
המיון מתבצע לפי הKey. כעת כשנרוץ על הSortedList נקבל:
|
|
Apple - 8
Banana - 4
Grapes - 16
Mango - 15
Orange - 23
Peache - 42
כמובן, איך אפשר בלי, קיים גם Overload לConstructor שמקבל Comparer לפיו נשווה את המפתחות:
|
|
איך זה עובד? בפועל מוחזקים שני מערכים – אחד של TKey והשני של TValue. בכל הכנסה מתבצע חיפוש של המקום המתאים במערך של המפתחות, ומתבצעת העתקה של כל המערך למערך אחר, עם ההוספה של המפתח החדש. במערך של הערכים פשוט מופיע כל ערך בהתאם למקום שבו מופיע המפתח שלו. כך שבעצם בכל הכנסה מתבצעות שתי העתקות של מערכים.
הדבר מאוד לא יעיל בהכנסות, אבל יכול להיות שימושי אם האוסף שלכם לא משתנה הרבה, ואכפת לכם שהוא תמיד יהיה ממוין.
המשך יום ממוין (אבל שלא משתנה יותר מדי)