SortedList در سی شارپ
<SortedList<TKey, TValue و SortedList مجموعه کلاس هایی هستند که می توانند جفت های کلید-مقدار را ذخیره کنند. این عناصر بر اساس کلیدها و بر پایه پیاده سازی IComparer مرتبط مرتب شده اند. به عنوان مثال، اگر کلیدها از انواع primitive باشند، پس به ترتیب صعودی کلیدها مرتب می شوند.
سی شارپ از SortedList عمومی (generic) و غیر عمومی (non-generic) پشتیبانی می کند. توصیه می شود که از <SortedList<TKey, TValue عمومی استفاده کنید زیرا نسبت به SortedList غیرعمومی سریعتر عمل می کند و خطای کمتری دارد.
خصوصیات و ویژگی های SortedList
1- <SortedList<TKey, TValue آرایه ای از جفت های کلید-مقدار است که بر اساس کلیدها مرتب شده اند.
2- عناصر را به محض اضافه شدن مرتب می کند. کلیدهای نوع primitive را به ترتیب صعودی و کلیدهای شیء را بر اساس <IComparer<T مرتب می کند.
3- در فضای نام System.Collection.Generic قرار دارد.
4- یک کلید باید منحصر به فرد باشد و نمی تواند تهی باشد.
5- یک مقدار می تواند تهی یا تکراری باشد.
6- با ارسال کلید مرتبط در mySortedList[key] می توان به یک مقدار دسترسی داشت.
7- حاوی عناصری از نوع <KeyValuePair<TKey, TValue است.
8- از حافظه کمتری نسبت به <SortedDictionary<TKey,TValue استفاده می کند.
9- در بازیابی داده ها پس از مرتب سازی سریع تر است، در حالی که <SortedDictionary<TKey, TValue در درج و حذف جفت های کلید-مقدار سریع تر است.
ایجاد SortedList
مثال زیر نحوه ایجاد یک <SortedList <TKey, TValue عمومی و افزودن جفت های کلید-مقدار در آن را نشان می دهد.
خروجی قطعه کد بالا به صورت زیر می باشد.
در مثال بالا، یک شیء <SortedList<TKey, TValue جنریک با تعیین نوع کلیدها و مقادیری که قرار است ذخیره کند ایجاد می شود. <SortedList<int, string کلیدهای نوع int و مقادیر نوع رشته را ذخیره می کند.
متد ()Add برای افزودن یک جفت کلید-مقدار واحد در SortedList استفاده می شود. کلیدها نمی توانند تهی یا تکراری باشند. اگر چنین چیزی پیدا شود، یک استثنا در زمان اجرا ایجاد می کند. اگر نوع قابل تهی بودن باشد، مقادیر می توانند تکراری و تهی باشند.
از دستور collection-initializer برای مقداردهی اولیه یک SortedList با چندین جفت کلید-مقدار در زمان نمونه سازی استفاده کنید. همانطور که در زیر نشان داده شده است.
SortedList جفت های کلید-مقدار را به محض اضافه شدن یک جفت کلید-مقدار به ترتیب صعودی کلیدها مجدداً مرتب سازی می کند. مثال زیر تمام کلیدها و مقادیر را با استفاده از حلقه foreach نمایش می دهد.
خروجی قطعه کد بالا به صورت زیر می باشد.
نحوه دسترسی به SortedList
برای دریافت یا تنظیم یک مقدار در SortedList، یک کلید در sortedList[key] مشخص کنید.
خروجی قطعه کد بالا به صورت زیر می باشد.
در کد بالا، numberNames[10] یک KeyNotFoundException ایجاد می کند زیرا کلید تعیین شده 10 در sortedlist وجود ندارد. برای جلوگیری از این استثنا، از متدهای ()ContainsKey یا ()TryGetValue مانند شکل زیر استفاده کنید.
خروجی قطعه کد بالا به صورت زیر می باشد.
اگر می خواهید یک SortedList را با استفاده از حلقه for تکرار کنید، از ویژگی های کلیدها و مقادیر استفاده کنید.
خروجی قطعه کد بالا به صورت زیر می باشد.
حذف عناصر از SortedList
از متد های Remove(key) و RemoveAt(index) برای حذف جفت های کلید-مقدار از SortedList استفاده کنید.
خروجی قطعه کد بالا به صورت زیر می باشد.