C#에서 SortedSet 개체가 지정된 컬렉션의 진상위 집합(proper superset)인지 확인하려면 IsProperSupersetOf() 메서드를 사용합니다.
진상위 집합이란 두 집합이 서로 같지 않으면서, 한 집합이 다른 집합의 모든 요소를 포함하고 추가적인 요소까지 가지고 있는 경우를 의미합니다. 즉, set2가 set1의 모든 요소를 포함하면서 set1에는 없는 요소를 하나 이상 더 가지고 있을 때 set2는 set1의 진상위 집합입니다.
예제 1
다음 예제에서는 두 개의 SortedSet을 만들고, set2가 set1의 진상위 집합인지 확인해 보겠습니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(){
SortedSet<int> set1 = new SortedSet<int>();
set1.Add(10);
set1.Add(20);
set1.Add(30);
set1.Add(40);
set1.Add(50);
set1.Add(60);
Console.WriteLine("SortedSet1의 요소...");
foreach (int res in set1){
Console.WriteLine(res);
}
SortedSet<int> set2 = new SortedSet<int>();
set2.Add(10);
set2.Add(20);
set2.Add(30);
set2.Add(40);
set2.Add(50);
set2.Add(60);
set2.Add(70);
set2.Add(80);
set2.Add(90);
set2.Add(100);
Console.WriteLine("SortedSet2의 요소...");
foreach (int res in set2){
Console.WriteLine(res);
}
Console.WriteLine("SortedSet2는 SortedSet1의 진상위 집합인가? = " + set2.IsProperSupersetOf(set1));
}
}출력 결과
SortedSet1의 요소... 10 20 30 40 50 60 SortedSet2의 요소... 10 20 30 40 50 60 70 80 90 100 SortedSet2는 SortedSet1의 진상위 집합인가? = True
set2(10~100)가 set1(10~60)의 모든 요소를 포함하고 있으며, 추가로 70~100의 요소도 가지고 있기 때문에 결과는 True가 반환됩니다.
예제 2
이번에는 중복된 값을 여러 번 추가하는 경우를 살펴보겠습니다. SortedSet은 중복 요소를 허용하지 않으므로 동일한 값을 여러 번 추가해도 실제로는 한 번만 저장됩니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(){
SortedSet<int> set1 = new SortedSet<int>();
set1.Add(10);
set1.Add(10);
set1.Add(10);
set1.Add(10);
Console.WriteLine("SortedSet1의 요소...");
foreach (int res in set1){
Console.WriteLine(res);
}
SortedSet<int> set2 = new SortedSet<int>();
set2.Add(10);
set2.Add(20);
set2.Add(30);
set2.Add(40);
set2.Add(50);
set2.Add(60);
set2.Add(70);
set2.Add(80);
set2.Add(90);
set2.Add(100);
Console.WriteLine("SortedSet2의 요소...");
foreach (int res in set2){
Console.WriteLine(res);
}
Console.WriteLine("SortedSet2는 SortedSet1의 진상위 집합인가? = " + set2.IsProperSupersetOf(set1));
}
}출력 결과
SortedSet1의 요소... 10 SortedSet2의 요소... 10 20 30 40 50 60 70 80 90 100 SortedSet2는 SortedSet1의 진상위 집합인가? = True
값 10을 네 번 추가했지만 SortedSet은 중복을 허용하지 않으므로 set1에는 10이라는 단일 요소만 저장됩니다. 따라서 set2가 set1의 모든 요소(10)를 포함하고 추가 요소들도 가지고 있어 결과는 True가 됩니다.
정리
IsProperSupersetOf() 메서드는 현재 SortedSet 개체가 지정된 컬렉션의 진상위 집합인지 여부를 판단하여 bool 값(True/False)으로 반환합니다. 두 집합이 완전히 동일한 경우에는 진상위 집합이 아니므로 False가 반환된다는 점에 유의하세요.