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

วิธีลบสมาชิกที่ระบุออกจาก HashSet ใน C#

บทความนี้สาธิตวิธีการลบสมาชิก (element) ที่ระบุออกจาก HashSet<T> โดยใช้ method Remove(T item)

ตัวอย่างที่ 1: ลบสมาชิกจาก HashSet สตริง

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        HashSet<string> set1 = new HashSet<string>();
        set1.Add("AB");
        set1.Add("CD");
        set1.Add("EF");
        set1.Add("AB"); // duplicate - จะไม่ถูกเพิ่ม
        set1.Add("IJ");
        set1.Add("KL");
        set1.Add("EF"); // duplicate
        set1.Add("OP");

        Console.WriteLine("Elements in HashSet1");
        foreach (string val in set1)
        {
            Console.WriteLine(val);
        }

        HashSet<string> set2 = new HashSet<string>();
        set2.Add("EF");
        set2.Add("KL");

        Console.WriteLine("Elements in HashSet2");
        foreach (string val in set2)
        {
            Console.WriteLine(val);
        }

        Console.WriteLine("Count of elements in HashSet2 = " + set2.Count);

        set2.Remove("KL");

        Console.WriteLine("\nElements in HashSet2... (UPDATED)");
        foreach (string res in set2)
        {
            Console.WriteLine(res);
        }

        Console.WriteLine("Count of elements in HashSet2 (Updated) = " + set2.Count);
        Console.WriteLine("\nIs set1 a superset of set2? " + set1.IsSupersetOf(set2));
    }
}

ผลลัพธ์

Elements in HashSet1
AB
CD
EF
IJ
KL
OP
Elements in HashSet2
EF
KL
Count of elements in HashSet2 = 2
Elements in HashSet2... (UPDATED)
EF
Count of elements in HashSet2 (Updated) = 1
Is set1 a superset of set2? True

ตัวอย่างที่ 2: ลบสมาชิกจาก HashSet ตัวเลข

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        HashSet<int> set1 = new HashSet<int>();
        set1.Add(100);
        set1.Add(200);
        set1.Add(300);
        set1.Add(400);
        set1.Add(500);
        set1.Add(600);

        Console.WriteLine("Elements in HashSet");
        foreach (int val in set1)
        {
            Console.WriteLine(val);
        }

        Console.WriteLine("Count of elements in HashSet = " + set1.Count);

        set1.Remove(300);

        Console.WriteLine("\nElements in HashSet... (UPDATED)");
        foreach (int res in set1)
        {
            Console.WriteLine(res);
        }

        Console.WriteLine("Count of elements in HashSet (Updated) = " + set1.Count);
    }
}

ผลลัพธ์

Elements in HashSet
100
200
300
400
500
600
Count of elements in HashSet = 6
Elements in HashSet... (UPDATED)
100
200
400
500
600
Count of elements in HashSet (Updated) = 5

คำอธิบายเพิ่มเติม

  • HashSet<T> ไม่อนุญาตค่าซ้ำ (unique values only) - เพิ่มซ้ำจะถูกข้ามไป
  • Remove(T item) ลบสมาชิกที่ระบุ คืนค่า true ถ้าลบสำเร็จ, false ถ้าไม่พบ
  • เวลา complexity: O(1) เฉลี่ย - เร็วมากเพราะใช้ hash table
  • ไม่สนใจลำดับ (unordered) - การวนลูปอาจไม่ได้ลำดับที่เพิ่มเข้าไป
  • มี method เพิ่มเติม: RemoveWhere(predicate), Clear(), ExceptWith(), SymmetricExceptWith()