HashSet v C# s příklady

V C# je HashSet neuspořádanou sbírkou jedinečných prvků. Tato kolekce je představena v .NET 3.5 . Podporuje implementaci sad a pro ukládání používá hashovací tabulku. Tato kolekce je kolekce obecného typu a je definována pod System.Collections.Generic jmenný prostor. Obecně se používá, když chceme zabránit umístění duplicitních prvků do kolekce. Výkon HashSet je mnohem lepší ve srovnání se seznamem.

Důležité body související s HashSet v C#

  • Třída HashSet implementuje ICollection , IEpočetné , IReadOnlyCollection , Září , IEpočetné , IDeserializationCallback , a ISerializovatelný rozhraní.
  • V HashSet není pořadí prvku definováno. Nemůžete třídit prvky HashSet.
  • V HashSet musí být prvky jedinečné.
  • V HashSet nejsou povoleny duplicitní prvky.
  • Poskytuje mnoho matematických množinových operací, jako je průnik, sjednocení a rozdíl.
  • Kapacita HashSet je počet prvků, které může pojmout.
  • HashSet je dynamická kolekce znamená, že velikost HashSet se automaticky zvětší, když jsou přidány nové prvky.
  • V HashSet můžete uložit pouze stejný typ prvků.

Jak vytvořit HashSet?

Třída HashSet poskytuje 7 různých typů konstruktorů které se používají k vytvoření HashSet, zde používáme pouze HashSet() , konstruktér. Chcete-li si přečíst více o konstruktorech HashSet, můžete se obrátit na C# | Třída HashSet .

HashSet(): Používá se k vytvoření instance třídy HashSet, která je prázdná a používá výchozí porovnávač rovnosti pro typ sady.

Krok 1: Zahrnout System.Collections.Generic jmenný prostor ve vašem programu s pomocí použitím klíčové slovo:

using System.Collections.Generic; 

Krok 2: Vytvořte HashSet pomocí třídy HashSet, jak je znázorněno níže:

HashSet Hashset_name = new HashSet(); 

Krok 3: Pokud chcete přidat prvky do vaší HashSet, použijte Přidat() metoda pro přidání prvků do vaší HashSet. A můžete také ukládat prvky do vaší HashSet pomocí inicializátoru kolekce.

Krok 4: K prvkům HashSet se přistupuje pomocí a pro každého smyčka. Jak je ukázáno v níže uvedeném příkladu.

Příklad:

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> >myhash1 => 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> >myhash2 => 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);> > }> > }> }>

Výstup

Elements of myhash1: C C++ C# Java Ruby Elements of myhash2: 10 100 1000 10000 100000 

Jak odstranit prvky z HashSet?

V HashSet máte povoleno odstraňovat prvky z HashSet. Třída HashSet poskytuje tři různé metody pro odstranění prvků a tyto metody jsou:

  • Odebrat (T) : Tato metoda se používá k odstranění zadaného prvku z objektu HashSet.
  • Odebrat kde (predikát) : Tato metoda se používá k odstranění všech prvků, které odpovídají podmínkám definovaným zadaným predikátem z kolekce HashSet.
  • Průhledná : Tato metoda se používá k odstranění všech prvků z objektu HashSet.

Příklad 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> >myhash => 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);> > }> }>

Výstup

Total number of elements present in myhash: 5 Total number of elements present in myhash: 4 Total number of elements present in myhash:0 

Nastavení operací

Třída HashSet také poskytuje některé metody, které se používají k provádění různých operací na sadách, a tyto metody jsou:

  • UnionWith(IEpočetné) : Tato metoda se používá k úpravě aktuálního objektu HashSet tak, aby obsahoval všechny prvky, které jsou přítomné v něm samotném, v zadané kolekci nebo obojí.

Příklad:

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> >myhash1 => 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> >myhash2 => 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);> > }> > }> }>

Výstup

C C++ C# Java Ruby PHP Perl 
  • IntersectWith(IEnumerable) : Tato metoda se používá k úpravě aktuálního objektu HashSet tak, aby obsahoval pouze prvky, které jsou přítomny v tomto objektu a v zadané kolekci.
    Příklad:

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> >myhash1 => 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> >myhash2 => 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);> > }> > }> }>

Výstup

C++ Java 
  • ExceptWith (IEnumerable) : Tato metoda se používá k odstranění všech prvků v zadané kolekci z aktuálního objektu HashSet.

Příklad:

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> >myhash1 => 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> >myhash2 => 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);> > }> > }> }>

Výstup

C C# Ruby