ภาพรวม
SortedList มีคุณสมบัติ Capacity แสดงขนาดอาร์เรย์ภายในที่จัดสรรไว้ (คล้าย ArrayList) และ Count แสดงจำนวนคู่คีย์-ค่าจริง Capacity เพิ่มขึ้นอัตโนมัติเมื่อเพิ่มข้อมูล
ตัวอย่างที่ 1: SortedList 10 รายการ ดู Count และ Capacity
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);
Console.WriteLine("Capacity of SortedList = " + sortedList.Capacity);
Console.WriteLine("\nEnumerator to iterate through the SortedList...");
IDictionaryEnumerator demoEnum = sortedList.GetEnumerator();
while (demoEnum.MoveNext())
Console.WriteLine("Key = " + demoEnum.Key + ", Value = " + demoEnum.Value);
}
}
ผลลัพธ์
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
Capacity of SortedList = 16
Enumerator to iterate through the SortedList...
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
ตัวอย่างที่ 2: Clear() และตรวจสอบ Capacity อีกครั้ง
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");
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);
Console.WriteLine("Capacity of SortedList = " + sortedList.Capacity);
sortedList.Clear();
Console.WriteLine("Count of SortedList key-value pairs = " + sortedList.Count);
Console.WriteLine("Capacity of SortedList = " + sortedList.Capacity);
}
}
ผลลัพธ์
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
Count of SortedList key-value pairs = 6
Capacity of SortedList = 16
Count of SortedList key-value pairs = 0
Capacity of SortedList = 16
คำอธิบายเพิ่มเติม
Capacityไม่ลดลงเมื่อ Clear() ต้องใช้TrimToSize()(หรือสร้างใหม่) เพื่อปล่อยหน่วยความจำ- SortedList ใช้อาร์เรย์สองตัวภายใน (keys array, values array) ขนาดเท่ากับ Capacity
- การเพิ่มข้อมูลเกิน Capacity จะขยายอาร์เรย์ (ปกติคูณ 2) ค่าใช้จ่าย O(n)
- SortedList เหมาะสำหรับข้อมูลที่ต้องการเรียงลำดับและค้นหาบ่อย (binary search O(log n))
- สำหรับโค้ดใหม่ แนะนำ
SortedList<TKey, TValue>(generic) หรือSortedDictionary<TKey, TValue>