C#에서 SortedSet<T>는 요소가 항상 정렬된 상태로 유지되는 컬렉션입니다. 새로운 요소를 추가하려면 Add() 메서드를 사용하며, 추가된 요소는 자동으로 오름차순으로 정렬되어 저장됩니다. 아래 예제를 통해 SortedSet에 요소를 추가하고 활용하는 방법을 살펴보겠습니다.
예제 1: 정수 요소 추가하기
다음 코드는 SortedSet에 정수 값을 추가하고, 전체 요소를 출력한 뒤 특정 요소의 존재 여부를 확인합니다.
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);
Console.WriteLine("Elements in SortedSet...");
foreach (int res in set1) {
Console.WriteLine(res);
}
Console.WriteLine("Does the SortedSet contains the element 500? = "+set1.Contains(500));
}
}
출력 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Elements in SortedSet... 100 200 300 400 Does the SortedSet contains the element 500? = False
출력 결과에서 알 수 있듯이, 요소를 추가한 순서와 관계없이 SortedSet은 항상 오름차순으로 정렬하여 저장합니다. 또한 Contains() 메서드를 사용하면 특정 요소가 집합에 포함되어 있는지 확인할 수 있습니다. 위 예제에서는 집합에 없는 값인 500을 검사했으므로 False가 반환되었습니다.
예제 2: 문자열 요소 추가 및 중복 처리
이번에는 문자열 타입의 SortedSet을 사용하여 중복 요소 처리 방식과 상위집합 판별 기능을 확인해 보겠습니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
SortedSet<string> set1 = new SortedSet<string>();
set1.Add("CD");
set1.Add("CD");
set1.Add("CD");
set1.Add("CD");
Console.WriteLine("Elements in SortedSet1...");
foreach (string res in set1) {
Console.WriteLine(res);
}
SortedSet<string> set2 = new SortedSet<string>();
set2.Add("BC");
set2.Add("CD");
set2.Add("DE");
set2.Add("EF");
set2.Add("AB");
set2.Add("HI");
set2.Add("JK");
Console.WriteLine("Elements in SortedSet2...");
foreach (string res in set2) {
Console.WriteLine(res);
}
Console.WriteLine("SortedSet2 is a superset of SortedSet1? = "+set2.IsSupersetOf(set1));
}
}
출력 결과
실행 결과는 다음과 같습니다.
Elements in SortedSet1... CD Elements in SortedSet2... AB BC CD DE EF HI JK SortedSet2 is a superset of SortedSet1? = True
여기서 주목할 점은 두 가지입니다. 첫째, set1에 동일한 문자열 "CD"를 네 번 추가했지만 실제로는 한 번만 저장되었습니다. SortedSet은 중복 요소를 허용하지 않는 집합 구조이기 때문에, 이미 존재하는 값을 다시 추가하면 무시됩니다.
둘째, IsSupersetOf() 메서드를 사용하면 한 집합이 다른 집합의 상위집합(superset)인지 판별할 수 있습니다. set2에는 set1의 유일한 요소인 "CD"가 포함되어 있으므로 True가 반환되었습니다.
핵심 정리
- 자동 정렬: 요소를 추가하면 항상 오름차순으로 정렬되어 저장됩니다.
- 중복 불허: 동일한 요소는 하나만 저장되며, 중복 추가 시 무시됩니다.
- Add(): 요소를 추가하는 메서드로, 이미 존재하면 false를 반환합니다.
- Contains(): 특정 요소의 존재 여부를 빠르게 확인합니다.
- IsSupersetOf(): 두 집합 간의 상위집합 관계를 판별합니다.