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는 또는 인터페이스를 Distinct
Union
Intersect
구현 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 | 제공되지 않습니다. |
.NET