Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
Este artigo fornece observações complementares à documentação de referência para esta 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 HashSet<T> objeto é o número de elementos que o objeto pode conter. A capacidade de um HashSet<T> objeto aumenta automaticamente à medida que elementos são adicionados ao objeto.
A classe HashSet<T> é baseada no modelo de conjuntos matemáticos e proporciona operações de conjunto de alto desempenho, semelhantes ao acesso às chaves das coleções Dictionary<TKey,TValue> ou 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 para seu aplicativo, considere usar a List<T> classe junto com o Sort método.
HashSet<T> Fornece muitas operações matemáticas de conjuntos, como adição de conjuntos (uniões) e subtração de conjuntos. A tabela a seguir lista as operações fornecidas HashSet<T> e seus equivalentes matemáticos.
| Operação HashSet | Equivalente matemático |
|---|---|
| UnionWith | Adição de união ou conjunto |
| IntersectWith | Intersecção |
| 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, a sobreposição de conjuntos e se um conjunto é um subconjunto ou superconjunto de outro conjunto.
Apenas .NET Framework: Para objetos muito grandes HashSet<T> , pode aumentar a capacidade máxima para 2 mil milhões de elementos num sistema de 64 bits definindo o enabled atributo do <gcAllowVeryLargeObjects> elemento de configuração para true no ambiente de execução.
A classe HashSet<T> implementa a interface ISet<T>.
Operações de conjunto HashSet e LINQ
LINQ fornece acesso às operações de conjunto Distinct, Union, Intersect, e Except em qualquer fonte de dados que implemente as interfaces IEnumerable ou IQueryable.
HashSet<T> fornece uma coleção maior e mais robusta de operações definidas. Por exemplo, HashSet<T> fornece comparações como IsSubsetOf e IsSupersetOf.
A diferença primária entre as operações de conjunto LINQ e as operações HashSet<T> é que as operações de conjunto LINQ sempre retornam uma nova coleção IEnumerable<T>, enquanto os métodos HashSet<T> 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, usar operações de conjunto LINQ em qualquer IEnumerable<T> coleção ou matriz será suficiente. No entanto, se seu aplicativo requer acesso a operações de conjunto adicionais, ou se não é desejável ou necessário criar uma nova coleção, use a HashSet<T> classe.
A tabela a seguir mostra as operações do HashSet<T> conjunto LINQ e suas operações equivalentes.
| Operação HashSet | Equivalente LINQ |
|---|---|
| UnionWith | Union |
| IntersectWith | Intersect |
| ExceptWith | Except |
| Não fornecido. | Distinct |
| SymmetricExceptWith | Não fornecido. |
| Overlaps | Não fornecido. |
| IsSubsetOf | Não fornecido. |
| IsProperSubsetOf | Não fornecido. |
| IsSupersetOf | Não fornecido. |
| IsProperSupersetOf | Não fornecido. |
| SetEquals | Não fornecido. |