บทความนี้สาธิตวิธีการลบรายการ (entry) ที่ดัชนี (index) ที่ระบุจาก SortedList โดยใช้ method RemoveAt(int index)
ตัวอย่างที่ 1: ลบดัชนี 3 จาก SortedList
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, 4)
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
ตัวอย่างที่ 2: ลบหลายดัชนีติดต่อกัน
using System;
using System.Collections;
public class Demo
{
public static void Main(String[] args)
{
SortedList sortedList = new SortedList();
sortedList.Add("One", "Mouse");
sortedList.Add("Two", "Keyboard");
sortedList.Add("Three", "Headphone");
sortedList.Add("Four", "Speakers");
sortedList.Add("Five", "RAM");
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(1); // ลบ index 1 (Four, Speakers)
sortedList.RemoveAt(2); // ลบ index 2 เดิม (ตอนนี้คือ Three, Headphone)
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 = Five, Value = RAM Key = Four, Value = Speakers Key = One, Value = Mouse Key = Three, Value = Headphone Key = Two, Value = Keyboard Count of SortedList key-value pairs = 5 Enumerator to iterate through the SortedList... Key = Five, Value = RAM Key = One, Value = Mouse Key = Two, Value = Keyboard Count of SortedList key-value pairs (Updated) = 3
คำอธิบายเพิ่มเติม
RemoveAt(int index)ลบรายการที่ดัชนีที่ระบุใน sorted order (0-based)- โยน
ArgumentOutOfRangeExceptionถ้าดัชนีอยู่นอกช่วง - ดัชนีเป็นของ sorted order (เรียงตามคีย์) ไม่ใช่ insertion order
- หลังลบแล้ว รายการถัดไปจะเลื่อนมาทับ (shift left) ใน internal arrays
- เวลา complexity: O(n) - ต้องเลื่อนข้อมูลใน array ทั้ง keys และ values
- Method คล้ายกัน:
Remove(key)ลบตามคีย์ (O(n) เช่นกัน) - แนะนำใช้
foreachกับDictionaryEntryแทน IDictionaryEnumerator