ภาพรวม
SortedSet<T> ใน namespace System.Collections.Generic เป็นเซตที่เก็บค่าไม่ซ้ำและเรียงลำดับอัตโนมัติ เมธอด UnionWith() รวมองค์ประกอบจากคอลเลกชันอื่นเข้าไป (union operation) โดยเก็บเฉพาะค่าที่ไม่ซ้ำและคงการเรียงลำดับ
ตัวอย่างที่ 1: ยูเนียนของเซตที่มีค่าทับซ้อน
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
SortedSet<int> set1 = new SortedSet<int>();
set1.Add(50);
set1.Add(100);
set1.Add(150);
Console.WriteLine("SortedSet1 elements...");
foreach(int ele in set1)
{
Console.WriteLine(ele);
}
SortedSet<int> set2 = new SortedSet<int>();
set2.Add(100);
set2.Add(150);
set2.Add(200);
set2.Add(250);
Console.WriteLine("SortedSet2 elements...");
foreach(int ele in set2)
{
Console.WriteLine(ele);
}
Console.WriteLine("Union...");
set1.UnionWith(set2);
foreach(int ele in set1)
{
Console.WriteLine(ele);
}
}
}
ผลลัพธ์
SortedSet1 elements...
50
100
150
SortedSet2 elements...
100
150
200
250
Union...
50
100
150
200
250
ตัวอย่างที่ 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);
set1.Add(400);
set1.Add(500);
set1.Add(600);
Console.WriteLine("SortedSet1 elements...");
foreach(int ele in set1)
{
Console.WriteLine(ele);
}
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("SortedSet2 elements...");
foreach(int ele in set2)
{
Console.WriteLine(ele);
}
Console.WriteLine("Union...");
set1.UnionWith(set2);
foreach(int ele in set1)
{
Console.WriteLine(ele);
}
}
}
ผลลัพธ์
SortedSet1 elements...
100
200
300
400
500
600
SortedSet2 elements...
100
200
300
400
500
600
Union...
100
200
300
400
500
600
คำอธิบายเพิ่มเติม
UnionWith()แก้ไขเซตต้นทาง (set1) โดยตรง (in-place) ไม่คืนค่าเซตใหม่- พารามิเตอร์รับ
IEnumerable<T>ใดๆ ก็ได้ ไม่จำเป็นต้องเป็น SortedSet - ซับซ้อนเวลา O(m log n) โดย m = จำนวนองค์ประกอบในคอลเลกชันที่ส่งเข้า, n = จำนวนในเซตปัจจุบัน
- SortedSet ใช้โครงสร้าง balanced tree (Red-Black tree) ให้การค้นหา เพิ่ม ลบ และการเรียงลำดับ O(log n)