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

การเพิ่มสมาชิกลงใน HashSet ใน C#

ภาพรวม

HashSet<T>.Add(T item) เพิ่มสมาชิกใหม่ หากซ้ำจะคืน false และไม่เพิ่ม (HashSet ไม่อนุญาตค่าซ้ำ) รองรับ Enumerator และการตรวจสอบ subset

ตัวอย่างที่ 1: เพิ่มข้อมูลใน HashSet สองตัวและเปรียบเทียบ

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main(String[] args)
    {
        HashSet<string> set1 = new HashSet<string>();
        set1.Add("A");
        set1.Add("B");
        set1.Add("C");
        set1.Add("D");
        set1.Add("E");
        set1.Add("F");
        set1.Add("G");
        set1.Add("H");

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

        HashSet<string> set2 = new HashSet<string>();
        set2.Add("John");
        set2.Add("Jacob");
        set2.Add("Ryan");
        set2.Add("Tom");
        set2.Add("Andy");
        set2.Add("Tim");
        set2.Add("Steve");
        set2.Add("Mark");

        Console.WriteLine("Elements in HashSet2... (Enumerator iterating through HashSet)");
        HashSet<string>.Enumerator demoEnum = set2.GetEnumerator();
        while (demoEnum.MoveNext())
        {
            string res = demoEnum.Current;
            Console.WriteLine(res);
        }

        Console.WriteLine("Is HashSet1 equal to HashSet2? = " + set1.Equals(set2));
    }
}

ผลลัพธ์

Elements in HashSet1...
A
B
C
D
E
F
G
H
Elements in HashSet2... (Enumerator iterating through HashSet)
John
Jacob
Ryan
Tom
Andy
Tim
Steve
Mark
Is HashSet1 equal to HashSet2? = False
Count of HashSet2 = 8
Count of HashSet2 (updated) = 0

ตัวอย่างที่ 2: ตรวจสอบ Subset ระหว่าง HashSet ตัวเลข

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main(String[] args)
    {
        HashSet<int> set1 = new HashSet<int>();
        set1.Add(100);
        set1.Add(200);

        Console.WriteLine("Elements in HashSet1...");
        foreach (int res in set1)
        {
            Console.WriteLine(res);
        }

        HashSet<int> set2 = new HashSet<int>();
        set2.Add(100);
        set2.Add(200);

        Console.WriteLine("Elements in HashSet2...");
        foreach (int res in set2)
        {
            Console.WriteLine(res);
        }

        Console.WriteLine("Is set1 a subset of set2? " + set1.IsSubsetOf(set2));
    }
}

ผลลัพธ์

Elements in HashSet1...
100
200
Elements in HashSet2...
100
200
Is set1 a subset of set2? True

สรุป

  • HashSet ไม่อนุญาตค่าซ้ำ Add() คืน false หากมีอยู่แล้ว
  • ลำดับไม่ได้รับประกัน (ขึ้นอยู่กับ hash code)
  • มีเมธอดเซต: IsSubsetOf, IsSupersetOf, UnionWith, IntersectWith, ExceptWith
  • Enumerator วนลูปได้แต่ลำดับไม่แน่นอน