Compartilhar via


System.Collections.Generic.HashSet<classe T>

Este artigo fornece observações complementares à documentação de referência para essa API.

A HashSet<T> classe fornece operações de conjunto de alto desempenho. Um conjunto é uma coleção que não contém elementos duplicados e cujos elementos não estão em nenhuma ordem específica.

A capacidade de um objeto HashSet<T> é o número de elementos que o objeto pode conter. A capacidade de um objeto HashSet<T> aumenta automaticamente à medida que elementos são adicionados ao objeto.

A HashSet<T> classe é baseada no modelo de conjuntos matemáticos e fornece operações de conjunto de alto desempenho semelhantes ao acesso às chaves das Dictionary<TKey,TValue> coleções OR Hashtable . Em termos simples, a HashSet<T> classe pode ser pensada como uma Dictionary<TKey,TValue> coleção sem valores.

Uma HashSet<T> coleção não é classificada e não pode conter elementos duplicados. Se a duplicação de ordem ou elemento for mais importante do que o desempenho do seu aplicativo, considere usar a List<T> classe junto com o Sort método.

HashSet<T> fornece muitas operações de conjunto matemático, como adição de conjunto (uniões) e subtração de conjunto. A tabela a seguir lista as operações fornecidas HashSet<T> e seus equivalentes matemáticos.

Operação HashSet Equivalente matemático
UnionWith União ou adição de conjunto
IntersectWith Cruzamento
ExceptWith Definir subtração
SymmetricExceptWith Diferença simétrica

Além das operações de conjunto listadas, a classe também fornece métodos para determinar a HashSet<T> igualdade de conjuntos, sobreposição de conjuntos e se um conjunto é um subconjunto ou superconjunto de outro conjunto.

Somente .NET Framework: para objetos muito grandes HashSet<T> , você pode aumentar a capacidade máxima para 2 bilhões de elementos em um sistema de 64 bits definindo o enabled<gcAllowVeryLargeObjects> atributo do elemento de configuração como true no ambiente de tempo de execução.

A classe HashSet<T> implementa a interface ISet<T>.

Operações de conjunto HashSet e LINQ

O LINQ fornece acesso às Distinctoperações , , IntersectUnione Except set em qualquer fonte de dados que implemente as IEnumerable interfaces orIQueryable. HashSet<T> fornece uma coleção maior e mais robusta de operações de conjunto. Por exemplo, HashSet<T> fornece comparações como IsSubsetOf e IsSupersetOf.

A principal diferença entre as operações de conjunto LINQ e HashSet<T> as operações é que as operações de conjunto LINQ sempre retornam uma nova IEnumerable<T> coleção, enquanto os HashSet<T> métodos equivalentes modificam a coleção atual.

Normalmente, se você precisar criar um novo conjunto ou se seu aplicativo precisar acessar apenas as operações de conjunto fornecidas, o uso de operações de conjunto LINQ em qualquer IEnumerable<T> coleção ou matriz será suficiente. No entanto, se seu aplicativo exigir acesso a operações de conjunto adicionais, ou se não for desejável ou necessário criar uma nova coleção, use a HashSet<T> classe.

A tabela a seguir mostra as HashSet<T> operações e suas operações de conjunto LINQ equivalentes.

Operação HashSet Equivalente ao LINQ
UnionWith Union
IntersectWith Intersect
ExceptWith Except
Não provido. Distinct
SymmetricExceptWith Não provido.
Overlaps Não provido.
IsSubsetOf Não provido.
IsProperSubsetOf Não provido.
IsSupersetOf Não provido.
IsProperSupersetOf Não provido.
SetEquals Não provido.