C#에서 집합(Set)은 HashSet 클래스로 구현됩니다. HashSet은 배열에 포함된 중복된 문자열이나 요소를 자동으로 걸러 주는, C# 환경에 최적화된 집합 컬렉션입니다. 해시 기반으로 동작하기 때문에 조회와 삽입이 빠르며, 대량의 데이터에서 중복 제거 작업에 특히 유용합니다.
HashSet 선언 방법
HashSet은 다음과 같이 간단하게 선언할 수 있습니다.
var h = new HashSet<string>(arr1);
위 코드는 이미 선언되어 있던 배열 arr1을 그대로 HashSet에 담는 예시입니다. HashSet은 내부적으로 중복 값을 허용하지 않기 때문에, 이 과정에서 동일한 요소는 하나만 저장됩니다.
배열로 되돌려 중복 제거하기
HashSet에 담긴 요소를 다시 배열로 변환하면 중복이 제거된 결과를 얻을 수 있습니다.
string[] arr2 = h.ToArray();
예제: HashSet으로 중복 문자열 제거하기
아래 예제에는 "Table"이라는 단어가 두 번 들어 있는 배열이 사용되었습니다. HashSet을 거치면서 중복이 어떻게 사라지는지 직접 확인해 보세요.
예제 코드
using System;
using System.Collections.Generic;
using System.Linq;
class Program {
static void Main() {
string[] arr1 = {"Table","Chair","Pen","Clip","Table"};
Console.WriteLine(string.Join(",", arr1));
// HashSet 생성
var h = new HashSet<string>(arr1);
// 중복 단어 제거 후 배열로 변환
string[] arr2 = h.ToArray();
Console.WriteLine(string.Join(",", arr2));
}
}
실행 결과
Table,Chair,Pen,Clip,Table
Table,Chair,Pen,Clip
첫 번째 출력에서는 원본 배열 그대로 "Table"이 두 번 나타나지만, HashSet을 거친 두 번째 출력에서는 중복이 제거된 것을 확인할 수 있습니다.
핵심 정리
- HashSet은 중복을 허용하지 않는 집합 자료구조입니다.
- 생성자에 배열을 전달하면 초기화와 동시에 중복이 자동으로 제거됩니다.
- ToArray() 메서드를 호출하면 중복이 제거된 새 배열을 얻을 수 있습니다.
- 해시 테이블 기반으로 동작하여 검색·삽입·삭제가 평균 O(1) 수준의 높은 성능을 보입니다.