اینجا میتونی برنامه نویسی ویندوز رو به طور کاملا رایگان یاد بگیری
3 سال پیش / خواندن دقیقه

آشنایی با کالکشن جنریک SortedList در سی شارپ + مثال

با استفاده از کالکشن جنریک SortedList میتوان مقادیر را به شکل کلید و مقدار ذخیره سازی کرد. در فصول قبلی با نوع غیر جنریک آن آشنا شدید. اما در این فصل به SortedList  جنریک خواهیم پرداخت.

کالکشن <SortedList<TKey,TValue

کالکشن SortedList مقادیر را به صورت key و value در خود ذخیره میکند. این مقادیر به صورت پیش فرض بر اساس key مرتب سازی می‌شوند. سی شارپ دارای دو نوع SortedList است یکی جنریک و دیگری غیر جنریک (SortedList غیر جنریک) در این فصل با نوع جنریک آن آشنا خواهیم شد.

نوع جنریک کالکشن SortedList به شکل <SortedList<TKey,TValue بوده که TKey نوع کلید و TValueنوع مقدار را مشخص میکند.

تعریف و نمونه سازی یک SortedList

می توان یک SortedList جنریک را به شکل زیر تعریف کرد :

SortedList<int,string> mySortedList = new SortedList<int,string>();

در نمونه مثال بالا از مقدار int برای نوع key و از نوع string برای نوع value استفاده شده است.

افزودن مقادیر به SortedList

از متد ()Add برای افزودن مقادیر به SortedList استفاده کنید. key نمیتواند null باشد اما value می‌تواند شامل null باشد.

SortedList<int,string> sortedList1 = new SortedList<int,string>();
sortedList1.Add(3, "Three");
sortedList1.Add(4, "Four");
sortedList1.Add(1, "One");
sortedList1.Add(5, "Five");
sortedList1.Add(2, "Two");
SortedList<string,int> sortedList2 = new SortedList<string,int>();
sortedList2.Add("one", 1);
sortedList2.Add("two", 2);
sortedList2.Add("three", 3);
sortedList2.Add("four", 4);
// Compile time error: cannot convert from <null> to <int>
// sortedList2.Add("Five", null);
    
SortedList<double,int?> sortedList3 = new SortedList<double,int?>();
sortedList3.Add(1.5, 100);
sortedList3.Add(3.5, 200);
sortedList3.Add(2.4, 300);
sortedList3.Add(2.3, null);
sortedList3.Add(1.1, null);

کالکشن SortedList زمانی که عنصری به آن افزوده می شود عناصر خود را مرتب سازی می کند. این مرتب سازی بر اساس key ها انجام می‌شود. اگر شما در محیط دیباگ ویژوال استادیو لیست ها را بررسی کنید می توانید این مورد را به وضوح مشاهده کنید :


آشنایی با کالکشن جنریک SortedList در سی شارپ + مثال
همانطور که در شکل بالا مشاهده می کنید sortedList۱ بر اساس مقادیر key (در اینجا اعداد صحیح) مرتب سازی شده است. در sortedList۲ از آنجایی که نوع key رشته است ، این مرتب سازی بر اساس حروف الفبا انجام شده است.

دسترسی به عناصر SortedList

مقادیر در لیست SortedList می‌توانند با استفاده از مقدار index و key مورد دسترسی قرار بگیرند :

SortedList<string,int> sortedList2 = new SortedList<string,int>();
sortedList2.Add("one", 1);
sortedList2.Add("two", 2);
sortedList2.Add("three", 3);
sortedList2.Add("four", 4);
Console.WriteLine(sortedList2["one"]);
Console.WriteLine(sortedList2["two"]);
Console.WriteLine(sortedList2["three"]);
//Following will throw runtime exception: KeyNotFoundException
Console.WriteLine(sortedList2["ten"]);

خروجی نمونه مثال بالا به شکل زیر است :

1 2 3

نمونه مثال زیر نحوه دسترسی به مقادیر SortedList با استفاده از حلقه for را نشان می دهد :

SortedList<string,int> sortedList2 = new SortedList<string,int>();
sortedList2.Add("one", 1);
sortedList2.Add("two", 2);
sortedList2.Add("three", 3);
sortedList2.Add("four", 4);
for (int i = 0; i < sortedList2.Count; i++)
{
                Console.WriteLine("key: {0}, value: {1}", sortedList2.Keys[i], sortedList2.Values[i]);
}

خروجی نمونه مثال بالا به شکل زیر است :

key: four, value: 4 key: one, value: 1 key: three, value: 3 key: two, value: 2

میتوان به شکل زیر و با استفاده از حلقه foreach و ساختار KeyValuePair به عناصر لیست دسترسی داشت :

SortedList<string,int> sortedList2 = new SortedList<string,int>();
sortedList2.Add("one", 1);
sortedList2.Add("two", 2);
sortedList2.Add("three", 3);
sortedList2.Add("four", 4);
foreach(KeyValuePair<string,int> kvp in sortedList2 )
    Console.WriteLine("key: {0}, value: {1}", kvp.Key , kvp.Value );

خروجی نمونه مثال بالا به شکل زیر است :

key: four, value: 4 key: one, value: 1 key: three, value: 3 key: two, value: 2

حذف عناصر از SortedList

با استفاده از متدهای (Remove(key و (RemoveAt(index می توان مقادیر را از SortedList حذف کرد :

SortedList<string,int> sortedList2 = new SortedList<string,int>();
sortedList2.Add("one", 1);
sortedList2.Add("two", 2);
sortedList2.Add("three", 3);
sortedList2.Add("four", 4);
    
sortedList2.Remove("one");//removes the element whose key is 'one'
sortedList2.RemoveAt(0);//removes the element at zero index i.e first element: four
foreach(KeyValuePair<string,int> kvp in sortedList2 )
    Console.WriteLine("key: {0}, value: {1}", kvp.Key , kvp.Value );

خروجی نمونه مثال بالا به شکل زیر است :

key: three, value: 3 key: two, value: 2


شاید از نوشته‌های زیر خوشتان بیاید
نظر خود را درباره این پست بنویسید ...

منوی سریع