Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

ลบรายการที่ระบุจาก SortedSet ใน C#

เมธอด 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 ที่เรียงลำดับและค้นหาเร็ว