Partager via


Classe System.Collections.Generic.HashSet <T>

Cet article fournit des remarques supplémentaires à la documentation de référence de cette API.

La HashSet<T> classe fournit des opérations d'ensemble à haute performance. Un ensemble est une collection qui ne contient aucun élément en double et dont les éléments ne suivent aucun ordre particulier.

La capacité d’un HashSet<T> objet est le nombre d’éléments que l’objet peut contenir. La capacité d’un HashSet<T> objet augmente automatiquement à mesure que les éléments sont ajoutés à l’objet.

La classe HashSet<T> est basée sur le modèle des ensembles mathématiques et fournit des opérations de l'ensemble hautes performances, similaires à l'accès aux clés des collections Dictionary<TKey,TValue> ou Hashtable. En termes simples, la HashSet<T> classe peut être considérée comme une Dictionary<TKey,TValue> collection sans valeurs.

Une HashSet<T> collection n’est pas triée et ne peut pas contenir d’éléments en double. Si la duplication d’ordre ou d’élément est plus importante que les performances de votre application, envisagez d’utiliser la List<T> classe avec la Sort méthode.

HashSet<T> fournit de nombreuses opérations sur les ensembles mathématiques, telles que l'addition d'ensemble (unions) et la soustraction d'ensemble. Le tableau suivant répertorie les opérations fournies HashSet<T> et leurs équivalents mathématiques.

L'opération HashSet Équivalent mathématique
UnionWith Union ou ajout d'ensemble
IntersectWith Carrefour
ExceptWith Définir la soustraction
SymmetricExceptWith Différence symétrique

Outre les opérations de jeu répertoriées, la HashSet<T> classe fournit également des méthodes pour déterminer l’égalité des jeux, le chevauchement des jeux et si un ensemble est un sous-ensemble ou un super-ensemble d’un autre ensemble.

.NET Framework uniquement : Pour les objets très volumineux HashSet<T> , vous pouvez augmenter la capacité maximale à 2 milliards d’éléments sur un système 64 bits en définissant l’attribut enabled de l’élément <gcAllowVeryLargeObjects> de configuration dans true l’environnement d’exécution.

La classe HashSet<T> implémente l’interface ISet<T>.

Opérations ensemblistes HashSet et LINQ

LINQ fournit l’accès aux opérations Distinct, Union, Intersect et Except sur n’importe quelle source de données qui implémente les interfaces IEnumerable ou IQueryable. HashSet<T> fournit une collection plus grande et plus robuste d’opérations sur les ensembles. Par exemple, HashSet<T> fournit des comparaisons telles que IsSubsetOf et IsSupersetOf.

La principale différence entre les opérations d'ensembles LINQ et les opérations HashSet<T> est que les opérations d'ensembles LINQ retournent toujours une nouvelle collection IEnumerable<T>, tandis que les méthodes équivalentes HashSet<T> modifient la collection actuelle.

Généralement, si vous devez créer un nouvel ensemble ou si votre application a besoin d'accéder uniquement aux opérations sur les ensembles fournies, l'utilisation des opérations de LINQ sur une IEnumerable<T> collection ou un tableau suffit. Toutefois, si votre application nécessite l'accès à des opérations de l'ensemble supplémentaires, ou s'il n'est pas souhaitable ou nécessaire de créer une nouvelle collection, utilisez la classe HashSet<T>.

Le tableau suivant présente les opérations HashSet<T> et leurs opérations équivalentes LINQ sur les ensembles.

L'opération HashSet LINQ équivalent
UnionWith Union
IntersectWith Intersect
ExceptWith Except
Non fourni. Distinct
SymmetricExceptWith Non fourni.
Overlaps Non fourni.
IsSubsetOf Non fourni.
IsProperSubsetOf Non fourni.
IsSupersetOf Non fourni.
IsProperSupersetOf Non fourni.
SetEquals Non fourni.