In C#, HashSet è una raccolta non ordinata di elementi univoci. Questa raccolta viene introdotta in .NET 3.5 . Supporta l'implementazione di set e utilizza la tabella hash per l'archiviazione. Questa raccolta è di tipo generico ed è definita in System.Collections.Generic spazio dei nomi. Viene generalmente utilizzato quando vogliamo evitare che vengano inseriti elementi duplicati nella raccolta. Le prestazioni dell'HashSet sono molto migliori rispetto all'elenco.
Punti importanti relativi a HashSet in C#
- La classe HashSet implementa il ICollection , IEnumerabile , Collezione IReadOnly , settembre , IEnumerabile , IDeserializationCallback , E ISerializzabile interfacce.
- In HashSet, l'ordine dell'elemento non è definito. Non è possibile ordinare gli elementi di HashSet.
- In HashSet, gli elementi devono essere univoci.
- In HashSet non sono consentiti elementi duplicati.
- Fornisce molte operazioni matematiche sugli insiemi, come intersezione, unione e differenza.
- La capacità di un HashSet è il numero di elementi che può contenere.
- Un HashSet è una raccolta dinamica: la dimensione dell'HashSet viene automaticamente aumentata quando vengono aggiunti nuovi elementi.
- In HashSet è possibile memorizzare solo lo stesso tipo di elementi.
Come creare un HashSet?
La classe HashSet fornisce 7 diversi tipi di costruttori che vengono utilizzati per creare un HashSet, qui utilizziamo solo SetHash() , costruttore. Per saperne di più sui costruttori di HashSet puoi fare riferimento a C# | Classe HashSet .
HashSet(): Viene utilizzato per creare un'istanza vuota della classe HashSet e utilizza l'operatore di confronto di uguaglianza predefinito per il tipo di set.
Passo 1: Includere System.Collections.Generic spazio dei nomi nel tuo programma con l'aiuto di utilizzando parola chiave:
using System.Collections.Generic;>
Passo 2: Crea un HashSet utilizzando la classe HashSet come mostrato di seguito:
HashSet Hashset_name = new HashSet();>
Passaggio 3: Se desideri aggiungere elementi al tuo HashSet, utilizza Aggiungere() metodo per aggiungere elementi nel tuo HashSet. E puoi anche memorizzare elementi nel tuo HashSet utilizzando l'inizializzatore di raccolta.
Passaggio 4: È possibile accedere agli elementi di HashSet utilizzando a per ciascuno ciclo continuo. Come mostrato nell'esempio seguente.
Esempio:
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>>miohash1 =>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>>miohash2 =>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);> >}> >}> }> |
>
hashset Java
>Produzione
Elements of myhash1: C C++ C# Java Ruby Elements of myhash2: 10 100 1000 10000 100000>
Come rimuovere elementi dall'HashSet?
In HashSet, puoi rimuovere elementi da HashSet. La classe HashSet fornisce tre diversi metodi per rimuovere elementi e i metodi sono:
- Rimuovi(T) : Questo metodo viene utilizzato per rimuovere l'elemento specificato da un oggetto HashSet.
- RimuoviDove(Predicato) : Questo metodo viene utilizzato per rimuovere tutti gli elementi che soddisfano le condizioni definite dal predicato specificato da una raccolta HashSet.
- Chiaro : Questo metodo viene utilizzato per rimuovere tutti gli elementi da un oggetto HashSet.
Esempio 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>>miohash =>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);> >}> }> |
>
>
triplice invernoProduzione
Total number of elements present in myhash: 5 Total number of elements present in myhash: 4 Total number of elements present in myhash:0>
Imposta operazioni
La classe HashSet fornisce anche alcuni metodi utilizzati per eseguire diverse operazioni sui set e i metodi sono:
- UnioneCon(IEnumerable) : Questo metodo viene utilizzato per modificare l'oggetto HashSet corrente in modo che contenga tutti gli elementi presenti in esso stesso, nella raccolta specificata o in entrambi.
Esempio:
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>>miohash1 =>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>>miohash2 =>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);> >}> >}> }> |
>
>Produzione
C C++ C# Java Ruby PHP Perl>
- IntersectWith(IEnumerable) : Questo metodo viene utilizzato per modificare l'oggetto HashSet corrente in modo che contenga solo gli elementi presenti in quell'oggetto e nella raccolta specificata.
Esempio:
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>>miohash1 =>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>>miohash2 =>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);> >}> >}> }> |
>
>Produzione
C++ Java>
- TranneCon(IEnumerable) : Questo metodo viene utilizzato per rimuovere tutti gli elementi nella raccolta specificata dall'oggetto HashSet corrente.
Esempio:
C#
qual è il numero dell'alfabeto
// 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>>miohash1 =>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>>miohash2 =>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);> >}> >}> }> |
>
>Produzione
C C# Ruby>