En C#, HashSet est une collection non ordonnée d'éléments uniques. Cette collection est introduite dans .NET 3.5 . Il prend en charge l'implémentation d'ensembles et utilise la table de hachage pour le stockage. Cette collection est de type générique collection et elle est définie sous Système.Collections.Générique espace de noms. Il est généralement utilisé lorsque l’on souhaite empêcher le placement d’éléments en double dans la collection. Les performances du HashSet sont bien meilleures par rapport à la liste.
Points importants liés à HashSet en C#
- La classe HashSet implémente le ICollection , IEnumerable , IReadOnlyCollection , septembre , IEnumerable , IDesérialisationCallback , et ISérialisable interfaces.
- Dans HashSet, l'ordre de l'élément n'est pas défini. Vous ne pouvez pas trier les éléments de HashSet.
- Dans HashSet, les éléments doivent être uniques.
- Dans HashSet, les éléments en double ne sont pas autorisés.
- Il fournit de nombreuses opérations mathématiques sur les ensembles, telles que l'intersection, l'union et la différence.
- La capacité d'un HashSet est le nombre d'éléments qu'il peut contenir.
- Un HashSet est une collection dynamique, ce qui signifie que la taille du HashSet est automatiquement augmentée lorsque de nouveaux éléments sont ajoutés.
- Dans HashSet, vous ne pouvez stocker que le même type d’éléments.
Comment créer un HashSet ?
La classe HashSet fournit 7 types différents de constructeurs qui servent à créer un HashSet, ici nous utilisons uniquement HashSet() , constructeur. Pour en savoir plus sur les constructeurs de HashSet, vous pouvez vous référer à C# | Classe HashSet .
HashSet() : Il est utilisé pour créer une instance de la classe HashSet qui est vide et utilise le comparateur d'égalité par défaut pour le type d'ensemble.
Étape 1: Inclure Système.Collections.Générique espace de noms dans votre programme à l'aide de en utilisant mot-clé:
using System.Collections.Generic;>
Étape 2: Créez un HashSet à l'aide de la classe HashSet comme indiqué ci-dessous :
HashSet Hashset_name = new HashSet();>
Étape 3: Si vous souhaitez ajouter des éléments dans votre HashSet, utilisez Ajouter() méthode pour ajouter des éléments dans votre HashSet. Et vous pouvez également stocker des éléments dans votre HashSet à l'aide de l'initialiseur de collection.
Étape 4: Les éléments de HashSet sont accessibles à l'aide d'un pour chaque boucle. Comme le montre l'exemple ci-dessous.
Exemple:
C#
// C# program to illustrate how to> // create hashset> using> System;> using> System.Collections.Generic;> class> GFG {> >// Main Method> >static> public> void> Main()> >{> >// Creating HashSet> >// Using HashSet class> >HashSet<>string>>monhash1 =>new> HashSet<>string>>();> >// Add the elements in HashSet> >// Using Add method> >myhash1.Add(>'C'>);> >myhash1.Add(>'C++'>);> >myhash1.Add(>'C#'>);> >myhash1.Add(>'Java'>);> >myhash1.Add(>'Ruby'>);> >Console.WriteLine(>'Elements of myhash1:'>);> >// Accessing elements of HashSet> >// Using foreach loop> >foreach>(>var> val>in> myhash1)> >{> >Console.WriteLine(val);> >}> >// Creating another HashSet> >// using collection initializer> >// to initialize HashSet> >HashSet<>int>>monhash2 =>new> HashSet<>int>>() {10,> >100,1000,10000,100000};> > >// Display elements of myhash2> >Console.WriteLine(>'Elements of myhash2:'>);> >foreach>(>var> value>in> myhash2)> >{> >Console.WriteLine(value);> >}> >}> }> |
>
comparer à une chaîne
>Sortir
Elements of myhash1: C C++ C# Java Ruby Elements of myhash2: 10 100 1000 10000 100000>
Comment supprimer des éléments du HashSet ?
Dans HashSet, vous êtes autorisé à supprimer des éléments du HashSet. La classe HashSet fournit trois méthodes différentes pour supprimer des éléments et les méthodes sont :
- Supprimer(T) : Cette méthode est utilisée pour supprimer l'élément spécifié d'un objet HashSet.
- SupprimerOù (Prédicat) : Cette méthode est utilisée pour supprimer tous les éléments qui correspondent aux conditions définies par le prédicat spécifié d'une collection HashSet.
- Clair : Cette méthode est utilisée pour supprimer tous les éléments d'un objet HashSet.
Exemple 1:
C#
// C# program to illustrate how to> // remove elements of HashSet> using> System;> using> System.Collections.Generic;> class> GFG {> >// Main Method> >static> public> void> Main()> >{> >// Creating HashSet> >// Using HashSet class> >HashSet<>string>>mon hachage =>new> HashSet<>string>>();> >// Add the elements in HashSet> >// Using Add method> >myhash.Add(>'C'>);> >myhash.Add(>'C++'>);> >myhash.Add(>'C#'>);> >myhash.Add(>'Java'>);> >myhash.Add(>'Ruby'>);> >// Before using Remove method> >Console.WriteLine(>'Total number of elements present (Before Removal)'>+> >' in myhash: {0}'>, myhash.Count);> >// Remove element from HashSet> >// Using Remove method> >myhash.Remove(>'Ruby'>);> >// After using Remove method> >Console.WriteLine(>'Total number of elements present (After Removal)'>+> >' in myhash: {0}'>, myhash.Count);> >// Remove all elements from HashSet> >// Using Clear method> >myhash.Clear();> >Console.WriteLine(>'Total number of elements present'>+> >' in myhash:{0}'>, myhash.Count);> >}> }> |
>
>Sortir
Total number of elements present in myhash: 5 Total number of elements present in myhash: 4 Total number of elements present in myhash:0>
Définir les opérations
La classe HashSet fournit également certaines méthodes utilisées pour effectuer différentes opérations sur les ensembles. Les méthodes sont :
- UnionAvec(IEnumerable) : Cette méthode est utilisée pour modifier l'objet HashSet actuel afin qu'il contienne tous les éléments présents en lui-même, dans la collection spécifiée ou dans les deux.
Exemple:
C#
// C# program to illustrate set operations> using> System;> using> System.Collections.Generic;> class> GFG {> >static> public> void> Main()> >{> >// Creating HashSet> >// Using HashSet class> >HashSet<>string>>monhash1 =>new> HashSet<>string>>();> >// Add the elements in HashSet> >// Using Add method> >myhash1.Add(>'C'>);> >myhash1.Add(>'C++'>);> >myhash1.Add(>'C#'>);> >myhash1.Add(>'Java'>);> >myhash1.Add(>'Ruby'>);> >// Creating another HashSet> >// Using HashSet class> >HashSet<>string>>monhash2 =>new> HashSet<>string>>();> >// Add the elements in HashSet> >// Using Add method> >myhash2.Add(>'PHP'>);> >myhash2.Add(>'C++'>);> >myhash2.Add(>'Perl'>);> >myhash2.Add(>'Java'>);> >// Using UnionWith method> >myhash1.UnionWith(myhash2);> >foreach>(>var> ele>in> myhash1)> >{> >Console.WriteLine(ele);> >}> >}> }> |
>
>Sortir
C C++ C# Java Ruby PHP Perl>
- IntersectionAvec(IEnumerable) : Cette méthode est utilisée pour modifier l'objet HashSet actuel afin qu'il contienne uniquement les éléments présents dans cet objet et dans la collection spécifiée.
Exemple:
C#
tests de régression dans les tests de logiciels
// C# program to illustrate set operations> using> System;> using> System.Collections.Generic;> class> GFG {> >// Main Method> >static> public> void> Main()> >{> >// Creating HashSet> >// Using HashSet class> >HashSet<>string>>monhash1 =>new> HashSet<>string>>();> >// Add the elements in HashSet> >// Using Add method> >myhash1.Add(>'C'>);> >myhash1.Add(>'C++'>);> >myhash1.Add(>'C#'>);> >myhash1.Add(>'Java'>);> >myhash1.Add(>'Ruby'>);> >// Creating another HashSet> >// Using HashSet class> >HashSet<>string>>monhash2 =>new> HashSet<>string>>();> >// Add the elements in HashSet> >// Using Add method> >myhash2.Add(>'PHP'>);> >myhash2.Add(>'C++'>);> >myhash2.Add(>'Perl'>);> >myhash2.Add(>'Java'>);> >// Using IntersectWith method> >myhash1.IntersectWith(myhash2);> >foreach>(>var> ele>in> myhash1)> >{> >Console.WriteLine(ele);> >}> >}> }> |
>
>Sortir
C++ Java>
- SaufAvec(IEnumerable) : Cette méthode est utilisée pour supprimer tous les éléments de la collection spécifiée de l'objet HashSet actuel.
Exemple:
C#
// C# program to illustrate set operations> using> System;> using> System.Collections.Generic;> class> GFG {> >// Main Method> >static> public> void> Main()> >{> >// Creating HashSet> >// Using HashSet class> >HashSet<>string>>monhash1 =>new> HashSet<>string>>();> >// Add the elements in HashSet> >// Using Add method> >myhash1.Add(>'C'>);> >myhash1.Add(>'C++'>);> >myhash1.Add(>'C#'>);> >myhash1.Add(>'Java'>);> >myhash1.Add(>'Ruby'>);> >// Creating another HashSet> >// Using HashSet class> >HashSet<>string>>monhash2 =>new> HashSet<>string>>();> >// Add the elements in HashSet> >// Using Add method> >myhash2.Add(>'PHP'>);> >myhash2.Add(>'C++'>);> >myhash2.Add(>'Perl'>);> >myhash2.Add(>'Java'>);> >// Using ExceptWith method> >myhash1.ExceptWith(myhash2);> >foreach>(>var> ele>in> myhash1)> >{> >Console.WriteLine(ele);> >}> >}> }> |
>
>Sortir
C C# Ruby>