C#의 HashSet<T>는 중복 없이 고유한 요소만 저장하는 컬렉션입니다. HashSet에 새로운 요소를 추가하려면 Add() 메서드를 사용하며, 해당 코드는 다음과 같습니다.
예제 1
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(String[] args){
HashSet<string> set1 = new HashSet<string>();
set1.Add("A");
set1.Add("B");
set1.Add("C");
set1.Add("D");
set1.Add("E");
set1.Add("F");
set1.Add("G");
set1.Add("H");
Console.WriteLine("HashSet1의 요소...");
foreach (string res in set1){
Console.WriteLine(res);
}
HashSet<string> set2 = new HashSet<string>();
set2.Add("John");
set2.Add("Jacob");
set2.Add("Ryan");
set2.Add("Tom");
set2.Add("Andy");
set2.Add("Tim");
set2.Add("Steve");
set2.Add("Mark");
Console.WriteLine("HashSet2의 요소... (Enumerator로 HashSet 순회)");
HashSet<string>.Enumerator demoEnum = set2.GetEnumerator();
while (demoEnum.MoveNext()) {
string res = demoEnum.Current;
Console.WriteLine(res);
}
Console.WriteLine("HashSet1과 HashSet2가 동일한가요? = " + set1.Equals(set2));
}
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
HashSet1의 요소... A B C D E F G H HashSet2의 요소... (Enumerator로 HashSet 순회) John Jacob Ryan Tom Andy Tim Steve Mark HashSet1과 HashSet2가 동일한가요? = False
참고: HashSet은 해시 기반으로 데이터를 저장하기 때문에 요소의 순서가 보장되지 않습니다. 또한 Equals() 메서드는 두 개체가 동일한 인스턴스인지를 비교하므로, 내용이 다른 set1과 set2를 비교하면 False가 반환됩니다.
예제 2
이번에는 정수형 HashSet에 요소를 추가하고, 두 집합 간의 포함 관계를 확인해 보겠습니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(String[] args){
HashSet<int> set1 = new HashSet<int>();
set1.Add(100);
set1.Add(200);
Console.WriteLine("HashSet1의 요소...");
foreach (int res in set1){
Console.WriteLine(res);
}
HashSet<int> set2 = new HashSet<int>();
set2.Add(100);
set2.Add(200);
Console.WriteLine("HashSet2의 요소...");
foreach (int res in set2){
Console.WriteLine(res);
}
Console.WriteLine("set1은 set2의 부분 집합인가요? " + set1.IsSubsetOf(set2));
}
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
HashSet1의 요소... 100 200 HashSet2의 요소... 100 200 set1은 set2의 부분 집합인가요? True
핵심 정리
- Add(): HashSet에 요소를 추가합니다. 이미 존재하는 요소라면 무시되고 false를 반환합니다.
- GetEnumerator(): HashSet의 요소를 하나씩 순회할 수 있는 열거자(Enumerator)를 반환합니다.
- IsSubsetOf(): 한 집합이 다른 집합의 부분 집합인지 여부를 확인합니다.
- HashSet은 중복 요소를 허용하지 않으므로, 동일한 값을 여러 번 추가해도 하나만 저장됩니다.