Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 집합(HashSet) 완벽 정리: 배열의 중복 요소 손쉽게 제거하기

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) 수준의 높은 성능을 보입니다.