เมธอด Remove(T item) ของ SortedSet<T> ใช้ลบองค์ประกอบที่ระบุ คืนค่า true หากลบสำเร็จ (พบและลบ) หรือ false หากไม่พบ
ตัวอย่างที่ 1: ลบหลายรายการจาก SortedSet<string>
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
SortedSet<string> set1 = new SortedSet<string>();
set1.Add("AB");
set1.Add("BC");
set1.Add("CD");
set1.Add("EF");
Console.WriteLine("องค์ประกอบใน SortedSet1...");
foreach (string res in set1)
{
Console.WriteLine(res);
}
SortedSet<string> set2 = new SortedSet<string>();
set2.Add("BC");
set2.Add("CD");
set2.Add("DE");
set2.Add("EF");
set2.Add("AB");
set2.Add("HI");
set2.Add("JK");
Console.WriteLine("องค์ประกอบใน SortedSet2...");
foreach (string res in set2)
{
Console.WriteLine(res);
}
Console.WriteLine("จำนวนองค์ประกอบใน SortedSet = " + set2.Count); // 7
// ลบ "HI" และ "JK"
set2.Remove("HI");
set2.Remove("JK");
Console.WriteLine("จำนวนองค์ประกอบใน SortedSet (อัปเดต) = " + set2.Count); // 5
}
}
ผลลัพธ์ (เรียงลำดับอัตโนมัติ)
องค์ประกอบใน SortedSet1... AB BC CD EF องค์ประกอบใน SortedSet2... AB BC CD DE EF HI JK จำนวนองค์ประกอบใน SortedSet = 7 จำนวนองค์ประกอบใน SortedSet (อัปเดต) = 5
ตัวอย่างที่ 2: SortedSet<int> ลบรายการเดียว
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
SortedSet<int> set1 = new SortedSet<int>();
set1.Add(100);
set1.Add(200);
set1.Add(300);
set1.Add(400);
Console.WriteLine("องค์ประกอบใน SortedSet...");
foreach (int res in set1)
{
Console.WriteLine(res);
}
Console.WriteLine("จำนวนองค์ประกอบใน SortedSet = " + set1.Count); // 4
// ลบ 100
bool removed = set1.Remove(100);
Console.WriteLine("ลบ 100 สำเร็จ? " + removed); // True
Console.WriteLine("จำนวนองค์ประกอบใน SortedSet (อัปเดต) = " + set1.Count); // 3
// ลองลบค่าที่ไม่มี
bool notFound = set1.Remove(999);
Console.WriteLine("ลบ 999 สำเร็จ? " + notFound); // False
}
}
ผลลัพธ์
องค์ประกอบใน SortedSet... 100 200 300 400 จำนวนองค์ประกอบใน SortedSet = 4 ลบ 100 สำเร็จ? True จำนวนองค์ประกอบใน SortedSet (อัปเดต) = 3 ลบ 999 สำเร็จ? False
เมธอดลบที่เกี่ยวข้อง
| เมธอด | คำอธิบาย |
|---|---|
Remove(T) | ลบองค์ประกอบที่ระบุ คืน bool |
RemoveWhere(Predicate<T>) | ลบองค์ประกอบที่ตรงเงื่อนไข คืนจำนวนที่ลบ |
Clear() | ลบทั้งหมด |
ExceptWith(IEnumerable<T>) | ลบสมาชิกที่อยู่ในคอลเลกชันอื่น (Set Difference) |
ตัวอย่าง RemoveWhere
// ลบค่าที่มากกว่า 250
int removedCount = set1.RemoveWhere(x => x > 250);
// set1 เหลือ {100, 200} ถ้าเดิมคือ {100, 200, 300, 400}
ข้อสังเกต
Removeใช้เวลา O(log n) เนื่องจากโครงสร้าง Tree- คืนค่า
falseหากไม่พบรายการ (ไม่โยน Exception) - SortedSet รักษาลำดับเรียงอัตโนมัติหลังการลบ
- เหมาะสำหรับกรณีต้องการ Set ที่เรียงลำดับและค้นหาเร็ว