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

ตรวจสอบว่า HashSet และคอลเลกชันที่ระบุมีองค์ประกอบเหมือนกันทั้งหมดหรือไม่ใน C#

ภาพรวม

เมธอด HashSet<T>.SetEquals(IEnumerable<T>) ตรวจสอบว่าเซตและคอลเลกชันที่ระบุมีองค์ประกอบ เหมือนกันทุกประการ (ไม่มากกว่า ไม่น้อยกว่า ไม่ต่างกัน) คืนค่า true หากเท่ากัน false หากต่างกัน

ตัวอย่างที่ 1: เซตที่มีขนาดต่างกัน

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        HashSet<string> set1 = new HashSet<string>();
        set1.Add("One");
        set1.Add("Two");
        set1.Add("Three");
        set1.Add("Four");
        set1.Add("Five");
        set1.Add("Six");
        set1.Add("Seven");
        HashSet<string> set2 = new HashSet<string>();
        set2.Add("One");
        set2.Add("Two");
        set2.Add("Three");
        set2.Add("Four");
        Console.WriteLine("Does it contain the same elements? = " + set1.SetEquals(set2));
    }
}

ผลลัพธ์

Does it contain the same elements? = False

ตัวอย่างที่ 2: เซตที่มีองค์ประกอบเหมือนกันทุกประการ

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);
        HashSet<int> set2 = new HashSet<int>();
        set2.Add(100);
        set2.Add(200);
        set2.Add(300);
        set2.Add(400);
        set2.Add(500);
        set2.Add(600);
        Console.WriteLine("Does it contain the same elements? = " + set1.SetEquals(set2));
    }
}

ผลลัพธ์

Does it contain the same elements? = True

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

  • SetEquals() ตรวจสอบว่าเซตทั้งสองเป็นเซตเดียวกัน (same elements) ลำดับไม่สำคัญ
  • ต่างจาก Overlaps() ที่ตรวจสอบเพียงว่ามีค่าร่วมกันอย่างน้อยหนึ่งค่า
  • พารามิเตอร์รับ IEnumerable<T> ใดๆ ก็ได้
  • ซับซ้อนเวลา O(n) โดย n = จำนวนองค์ประกอบในเซตปัจจุบัน (สมมติ hash distribution ดี)
  • HashSet ใช้ GetHashCode() และ Equals() ของ T สำหรับการเปรียบเทียบ