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

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

ภาพรวม

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

ตัวอย่างที่ 1: เซตที่มีค่าร่วมกันทั้งหมด

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);
        set1.Add(500);
        set1.Add(600);
        SortedSet<int> set2 = new SortedSet<int>();
        set2.Add(100);
        set2.Add(200);
        set2.Add(300);
        set2.Add(400);
        set2.Add(500);
        set2.Add(600);
        Console.WriteLine("Does it share common elements? = " + set1.Overlaps(set2));
    }
}

ผลลัพธ์

Does it share common elements? = True

ตัวอย่างที่ 2: เซตที่ไม่มีค่าร่วมกัน

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);
        SortedSet<int> set2 = new SortedSet<int>();
        set2.Add(450);
        set2.Add(550);
        set2.Add(650);
        set2.Add(750);
        set2.Add(800);
        Console.WriteLine("Does it share common elements? = " + set1.Overlaps(set2));
    }
}

ผลลัพธ์

Does it share common elements? = False

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

  • Overlaps() หยุดการตรวจสอบทันทีเมื่อพบค่าร่วมกันแรก (short-circuit) ประหยัดเวลา
  • พารามิเตอร์รับ IEnumerable<T> ใดๆ ก็ได้ (List, Array, HashSet, อื่นๆ)
  • ซับซ้อนเวลา O(m log n) โดย m = ขนาดคอลเลกชันที่ส่งเข้า, n = ขนาดเซต
  • ต่างจาก SetEquals() ที่ตรวจสอบว่าเซตทั้งสองมีค่า เหมือนกันทุกประการ