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

کلاس SortedList در سی شارپ +مثال

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

SortedList 

کالکشن SortedList مقادیر را به صورت key-value ذخیره‌سازی می‌کند. ترتیب قرار گیری مقادیر به صورت پیش فرض بر اساس key انجام میگیرد. کلاس SortedList اینترفیس های IDictionary و ICollection را پیاده سازی می کند ، بنابراین عناصر آن می‌توانند به وسیله مقادیر index واکشی شوند.

سی شارپ شامل دو نوع SortedList است : یکی generic و دیگری non-generic. در این فصل در مورد نسخه non-generic آن مطالبی را یاد خواهیم گرفت.

افزودن عنصر به SortedList

از متد ()Add برای اضافه کردن مقدار به SortedList استفاده می شود. key نمی تواند null باشد ولی value می تواند null باشد. نوع داده هایی که قرار است در این کالکشن ذخیره شوند ، همگی باید از یک نوع باشند. در غیر اینصورت با خطا روبرو خواهیم شد.

مثالی از اضافه کردن مقادیر key-value به SortedList :

SortedList sortedList1 = new SortedList();
sortedList1.Add(3, "Three");
sortedList1.Add(4, "Four");
sortedList1.Add(1, "One");
sortedList1.Add(5, "Five");
sortedList1.Add(2, "Two");
SortedList sortedList2 = new SortedList();
sortedList2.Add("one", 1);
sortedList2.Add("two", 2);
sortedList2.Add("three", 3);
sortedList2.Add("four", 4);
    
SortedList sortedList3 = new SortedList();
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 را بر اساس ترتیب حروف الفبا مرتب سازی می کند. key ها می توانند از هر نوع داده ای باشند، اما نمی‌توان در یک sortedList از چندین نوع داده ای برای key ها استفاده کرد. نمونه مثال زیر به سادگی نشان می دهد که برنامه با خطا روبرو خواهد شد :

SortedList sortedList = new SortedList();
sortedList.Add(3, "Three");
sortedList.Add("Four", "Four"); // Throw exception: InvalidOperationException
sortedList.Add(1, "One");
sortedList.Add(8, "Five");
sortedList.Add(2, "Two");

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

عناصر موجود در یک SortedList می توانند توسط مقادیر key مورد دستیابی قرار گیرند :

SortedList sortedList = new SortedList();
sortedList.Add("one", 1);
sortedList.Add("two", 2);
sortedList.Add("three", 3);
sortedList.Add("four", "Four");
int i = (int) sortedList["one"];
int j = (int) sortedList["two"];
string str = (string) sortedList["four"];
Console.WriteLine(i);
Console.WriteLine(j);
Console.WriteLine(str);

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

1 2 Four

 

نکته : در هنگام واکشی باید مقادیر واکشی شده به نوع مورد نظر تبدیل شوند (عملیات casting). همچنین می توان از کلمه ی کلیدی var هم استفاده نمود.

 

با استفاده از یک حلقه for می توان عناصر یک SortedList را در خروجی چاپ کرد :

SortedList sortedList2 = new SortedList();
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.GetKey(i), sortedList2.GetByIndex(i));
}

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

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

دسترسی به عناصر SortedList توسط حلقه foreach

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

SortedList sortedList1 = new SortedList();
sortedList1.Add("one", 1);
sortedList1.Add("two", 2);
sortedList1.Add("three", 3);
sortedList1.Add("four", 4);
foreach(DictionaryEntry kvp in sortedList1 )
                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 و ()RemoveAt برای حذف عناصر از SortedList استفاده میشود :

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

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

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

بررسی وجود مقادیر در SortedList

با استفاده از متدهای ()Contains و ()ContainsKey می توان مشخص کرد که عنصری خاص در SortedList وجود دارد و یا نه :

SortedList sortedList = new SortedList();
sortedList.Add(3, "Three");
sortedList.Add(2, "Two");
sortedList.Add(4, "Four");
sortedList.Add(1, "One");
sortedList.Add(8, "Five");
sortedList.Contains(2); // returns true
sortedList.Contains(4); // returns true
sortedList.Contains(6); // returns false
sortedList.ContainsKey(2); // returns true
sortedList.ContainsKey(6); // returns false
sortedList.ContainsValue("One"); // returns true
sortedList.ContainsValue("Ten"); // returns false


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

منوی سریع