SortedList (ใน System.Collections) เป็นคอลเลกชันคีย์-ค่าที่จัดเก็บเรียงลำดับตามคีย์ ใช้เมธอด Add(key, value) เพิ่มข้อมูล คีย์ต้องไม่ซ้ำกัน
ตัวอย่างโค้ดที่ 1: เพิ่มข้อมูลและดู Keys/Values
using System;
using System.Collections;
public class Demo
{
public static void Main(string[] args)
{
SortedList list = new SortedList();
list.Add("A", "Jacob");
list.Add("B", "Sam");
list.Add("C", "Tom");
list.Add("D", "John");
list.Add("E", "Tim");
list.Add("F", "Mark");
list.Add("G", "Gary");
list.Add("H", "Nathan");
list.Add("I", "Shaun");
list.Add("J", "David");
ICollection col1 = list.Values;
Console.WriteLine("Values...");
foreach (string s in col1)
Console.WriteLine(s);
ICollection col2 = list.Keys;
Console.WriteLine("\nKeys...");
foreach (string s in col2)
Console.WriteLine(s);
}
}
ผลลัพธ์
Values...
Jacob
Sam
Tom
John
Tim
Mark
Gary
Nathan
Shaun
David
Keys...
A
B
C
D
E
F
G
H
I
J
ตัวอย่างโค้ดที่ 2: ลบด้วย RemoveAt และวนลูปด้วย Enumerator
using System;
using System.Collections;
public class Demo
{
public static void Main(string[] args)
{
SortedList sortedList = new SortedList();
sortedList.Add("A", "1");
sortedList.Add("B", "2");
sortedList.Add("C", "3");
sortedList.Add("D", "4");
sortedList.Add("E", "5");
sortedList.Add("F", "6");
sortedList.Add("G", "7");
sortedList.Add("H", "8");
sortedList.Add("I", "9");
sortedList.Add("J", "10");
Console.WriteLine("SortedList elements...");
foreach (DictionaryEntry d in sortedList)
{
Console.WriteLine("Key = " + d.Key + ", Value = " + d.Value);
}
Console.WriteLine("Count of SortedList key-value pairs = " + sortedList.Count);
sortedList.RemoveAt(3); // ลบ index 3 (คีย์ D)
Console.WriteLine("\nEnumerator to iterate through the SortedList...");
IDictionaryEnumerator demoEnum = sortedList.GetEnumerator();
while (demoEnum.MoveNext())
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
Console.WriteLine("Count of SortedList key-value pairs (Updated) = " + sortedList.Count);
}
}
ผลลัพธ์
SortedList elements...
Key = A, Value = 1
Key = B, Value = 2
Key = C, Value = 3
Key = D, Value = 4
Key = E, Value = 5
Key = F, Value = 6
Key = G, Value = 7
Key = H, Value = 8
Key = I, Value = 9
Key = J, Value = 10
Count of SortedList key-value pairs = 10
Enumerator to iterate through the SortedList...
Key = A, Value = 1
Key = B, Value = 2
Key = C, Value = 3
Key = E, Value = 5
Key = F, Value = 6
Key = G, Value = 7
Key = H, Value = 8
Key = I, Value = 9
Key = J, Value = 10
Count of SortedList key-value pairs (Updated) = 9
เมธอดและ Property สำคัญของ SortedList
| Member | คำอธิบาย |
|---|---|
Add(key, value) | เพิ่มคีย์-ค่า (โยน exception หากคีย์ซ้ำ) |
Remove(key) | ลบตามคีย์ |
RemoveAt(index) | ลบตามดัชนี (0-based ตามลำดับคีย์) |
Clear() | ลบทั้งหมด |
ContainsKey(key) / ContainsValue(value) | ตรวจสอบความมีอยู่ |
IndexOfKey(key) / IndexOfValue(value) | หาดัชนี (-1 หากไม่พบ) |
Keys / Values | ICollection ของคีย์/ค่า |
GetKeyList() / GetValueList() | IList ที่เข้าถึงแบบ index ได้ |
Count | จำนวนรายการ |
Item[key] (indexer) | ได้/ตั้งค่า ด้วยคีย์ |
Generic Version: SortedList<TKey, TValue>
ในโค้ดใหม่ ควรใช้ System.Collections.Generic.SortedList<TKey, TValue> ซึ่งมี type safety และประสิทธิภาพดีกว่า
var sortedList = new SortedList();
sortedList.Add("A", 1);
sortedList.Add("B", 2);
// ...