C# HashSet<T> 클래스 이해하기
C#의 HashSet<T>
클래스는 중복을 허용하지 않는 고유한 요소를 저장하는 컬렉션입니다. System.Collections.Generic
네임스페이스에 포함되어 있으며, 요소를 저장하는 데 해시 테이블을 사용합니다. 이를 통해 빠른 조회, 추가 및 삭제 작업을 수행할 수 있습니다.
주요 기능
- 고유성: 모든 요소가 고유하도록 보장합니다.
- 성능: 대부분의 작업(추가, 삭제, 포함 여부 확인)에 대해 평균 O(1) 시간 복잡도를 제공합니다.
- 순서 보장 없음: 요소가 특정 순서로 저장되지 않습니다.
예제 코드
HashSet<T>
의 기본적인 사용 예제는 다음과 같습니다:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// HashSet 초기화
HashSet<string> hashSet = new HashSet<string>();
// 요소 추가
hashSet.Add("apple");
hashSet.Add("banana");
hashSet.Add("cherry");
// 중복 요소 추가 시도
bool added = hashSet.Add("apple"); // false 반환
// 요소 포함 여부 확인
bool containsBanana = hashSet.Contains("banana"); // true 반환
// 요소 삭제
hashSet.Remove("cherry");
// 모든 요소 출력
foreach (var item in hashSet)
{
Console.WriteLine(item);
}
}
}
HashSet<T>의 주요 메서드
Add(T item)
: 요소를 추가합니다. 중복된 요소는 추가되지 않습니다.
Remove(T item)
: 요소를 제거합니다.
Contains(T item)
: 요소의 포함 여부를 확인합니다.
Clear()
: 모든 요소를 제거합니다.
Count
: HashSet에 포함된 요소의 수를 반환합니다.
성능 고려사항
HashSet<T>
은 대부분의 작업에 대해 평균 O(1) 시간 복잡도를 제공하므로 성능이 뛰어납니다. 하지만 해시 충돌이 발생하면 성능이 저하될 수 있습니다. 따라서 요소의 해시 코드를 잘 설계하는 것이 중요합니다.
HashSet<T>
을 사용하면 고유한 요소만을 저장하고 빠른 조회, 추가, 삭제 작업을 수행할 수 있습니다. 다양한 시나리오에서 HashSet<T>
을 활용하여 효율적인 컬렉션 관리를 해보세요.