다음을 통해 공유


System.Collections.Generic.HashSet<T> 클래스

이 문서에서는 이 API에 대한 참조 설명서에 대한 추가 설명서를 제공합니다.

클래스는 HashSet<T> 고성능 집합 작업을 제공합니다. 집합은 중복 요소가 없고 요소가 특정 순서가 없는 컬렉션입니다.

개체의 HashSet<T> 용량은 개체가 보유할 수 있는 요소의 수입니다. HashSet<T> 개체에 요소가 추가되면 개체의 용량이 자동으로 증가합니다.

클래스는 HashSet<T> 수학 집합의 모델을 기반으로 하며 또는 Hashtable 컬렉션의 Dictionary<TKey,TValue> 키에 액세스하는 것과 유사한 고성능 집합 작업을 제공합니다. 간단히 말하면 클래스를 HashSet<T> 값이 없는 컬렉션으로 Dictionary<TKey,TValue> 간주할 수 있습니다.

HashSet<T> 컬렉션이 정렬되지 않았으므로 중복 요소를 포함할 수 없습니다. 순서 또는 요소 중복 애플리케이션에 대 한 성능 보다 더 중요 한 경우 사용을 고려 합니다 List<T> 와 함께 클래스는 Sort 메서드.

HashSet<T> 는 집합 더하기(공용 구조체) 및 집합 빼기와 같은 많은 수학 집합 연산을 제공합니다. 다음 표에서는 제공된 HashSet<T> 연산과 해당 수학 연산을 나열합니다.

HashSet 작업 그에 상응하는 수학
UnionWith 공용 구조체 또는 집합 추가
IntersectWith 교차로
ExceptWith 빼기 설정
SymmetricExceptWith 대칭 차이

나열된 집합 작업 외에도 클래스는 집합 같음, HashSet<T> 집합 겹침 및 집합이 다른 집합의 하위 집합인지 또는 상위 집합인지를 결정하는 메서드를 제공합니다.

.NET Framework만 해당: 매우 큰 HashSet<T> 개체의 경우 런타임 환경에서 구성 요소의 <gcAllowVeryLargeObjects> 특성을 설정 enabled 하여 64비트 시스템에서 최대 용량을 20억 요소로 true 늘릴 수 있습니다.

HashSet<T> 클래스가 ISet<T> 인터페이스를 구현합니다.

HashSet 및 LINQ 집합 작업

LINQ는 또는 인터페이스를 DistinctUnionIntersect구현 IEnumerableIQueryable 하는 모든 데이터 원본에 대한 , 및 Except 설정 작업에 대한 액세스를 제공합니다. HashSet<T> 는 집합 작업의 더 크고 강력한 컬렉션을 제공합니다. 예를 들어 다음과 HashSet<T> 같은 IsSubsetOfIsSupersetOf비교를 제공합니다.

LINQ 집합 작업과 HashSet<T> 작업 간의 주요 차이점은 LINQ 집합 작업이 항상 새 IEnumerable<T> 컬렉션을 반환하는 반면 HashSet<T> 동일한 메서드는 현재 컬렉션을 수정한다는 것입니다.

일반적으로 새 집합을 만들어야 할 경우, 애플리케이션에 제공 된 설정 작업에만 액세스 해야 하는 경우 LINQ를 사용 하 여 설정에서 작업을 IEnumerable<T> 컬렉션 또는 배열의 만으로도 충분 합니다. 그러나 애플리케이션에 필요한 추가 설정 작업에 대 한 액세스 또는 바람직하거나 새 컬렉션을 만들 필요가 없으면 사용 하 여는 HashSet<T> 클래스입니다.

다음 표에서는 작업 및 해당 LINQ 집합 작업을 보여 HashSet<T> 줍니다.

HashSet 작업 LINQ 해당 항목
UnionWith Union
IntersectWith Intersect
ExceptWith Except
제공되지 않습니다. Distinct
SymmetricExceptWith 제공되지 않습니다.
Overlaps 제공되지 않습니다.
IsSubsetOf 제공되지 않습니다.
IsProperSubsetOf 제공되지 않습니다.
IsSupersetOf 제공되지 않습니다.
IsProperSupersetOf 제공되지 않습니다.
SetEquals 제공되지 않습니다.