기본 패턴
csharp
var tags = new HashSet<string> { "csharp", "dotnet" };
tags.Add("linq");
bool hasDotnet = tags.Contains("dotnet");설명
HashSet<T>는 순서보다 "중복 없음"과 "빠른 포함 검사"가 중요할 때 잘 맞습니다.- 같은 값을 여러 번 추가해도 한 번만 유지됩니다.
- 태그 집합, 방문 기록, 허용 목록처럼 membership test가 중요한 문제에서 유용합니다.
- 집합 연산인
UnionWith,IntersectWith,ExceptWith도 기본 제공됩니다.
짧은 예제
csharp
var visited = new HashSet<int>();
visited.Add(101);
visited.Add(102);
visited.Add(101);
Console.WriteLine(visited.Count); // 2
Console.WriteLine(visited.Contains(102));빠른 정리
| 항목 | 설명 |
|---|---|
Add | 집합에 값 추가 |
Contains | 값 존재 여부 확인 |
| 중복 제거 | 같은 값은 한 번만 유지 |
Count | 현재 원소 수 |
| 집합 연산 | 합집합, 교집합, 차집합 지원 |
주의할 점
HashSet<T>는 삽입 순서를 보장하지 않습니다. 순서가 중요하면 List<T>나 다른 구조와 역할을 분리해서 써야 합니다.