En C#, HashSet es una colección desordenada de elementos únicos. Esta colección se introdujo en .NET 3.5 . Admite la implementación de conjuntos y utiliza la tabla hash para el almacenamiento. Esta colección es de tipo genérico y se define en el espacio de nombres System.Collections.Generic . Generalmente se usa cuando queremos evitar que se coloquen elementos duplicados en la colección. El rendimiento del HashSet es mucho mejor en comparación con la lista.
Puntos importantes:
- La clase HashSet implementa las interfaces ICollection , IEnumerable , IReadOnlyCollection , ISet , IEnumerable , IDeserializationCallback e ISerializable .
- En HashSet, el orden del elemento no está definido. No puede ordenar los elementos de HashSet.
- En HashSet, los elementos deben ser únicos.
- En HashSet, no se permiten elementos duplicados.
- Proporciona muchas operaciones matemáticas con conjuntos, como intersección, unión y diferencia.
- La capacidad de un HashSet es la cantidad de elementos que puede contener.
- Un HashSet es una colección dinámica, lo que significa que el tamaño del HashSet aumenta automáticamente cuando se agregan nuevos elementos.
- En HashSet, solo puede almacenar el mismo tipo de elementos.
¿Cómo crear un HashSet?
La clase HashSet proporciona 7 tipos diferentes de constructores que se usan para crear un HashSet, aquí solo usamos HashSet() , constructor. Para leer más sobre los constructores de HashSet, puede consultar C# | Clase HashSet .
HashSet(): se usa para crear una instancia de la clase HashSet que está vacía y usa el comparador de igualdad predeterminado para el tipo de conjunto.
Paso 1: incluya el espacio de nombres System.Collections.Generic en su programa con la ayuda de la palabra clave:
using System.Collections.Generic;
Paso 2: Cree un HashSet usando la clase HashSet como se muestra a continuación:
HashSet<Type_of_hashset> Hashset_name = new HashSet<Type_of_hashset>();
Paso 3: si desea agregar elementos en su HashSet, use el método Add() para agregar elementos en su HashSet. Y también puede almacenar elementos en su HashSet usando el inicializador de colección.
Paso 4: Se accede a los elementos de HashSet mediante un bucle foreach . Como se muestra en el siguiente ejemplo.
Ejemplo:
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); } } }
Elements of myhash1: C C++ C# Java Ruby Elements of myhash2: 10 100 1000 10000 100000
¿Cómo eliminar elementos del HashSet?
En HashSet, puede eliminar elementos del HashSet. La clase HashSet<T> proporciona tres métodos diferentes para eliminar elementos y los métodos son:
- Remove(T) : este método se utiliza para eliminar el elemento especificado de un objeto HashSet.
- RemoveWhere(Predicate) : este método se usa para eliminar todos los elementos que coinciden con las condiciones definidas por el predicado especificado de una colección HashSet.
- Borrar : este método se utiliza para eliminar todos los elementos de un objeto HashSet.
Ejemplo 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); } }
Total number of elements present in myhash: 5 Total number of elements present in myhash: 4 Total number of elements present in myhash:0
Establecer operaciones
La clase HashSet también proporciona algunos métodos que se utilizan para realizar diferentes operaciones en conjuntos y los métodos son:
- UnionWith(IEnumerable) : este método se usa para modificar el objeto HashSet actual para que contenga todos los elementos que están presentes en sí mismo, la colección especificada o ambos.
Ejemplo:
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); } } }
C C++ C# Java Ruby PHP Perl
- IntersectWith(IEnumerable) : este método se usa para modificar el objeto HashSet actual para que contenga solo los elementos que están presentes en ese objeto y en la colección especificada.
Ejemplo:
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); } } }
C++ Java
- ExceptWith(IEnumerable) : este método se utiliza para eliminar todos los elementos de la colección especificada del objeto HashSet actual.
Ejemplo:
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); } } }
C C# Ruby
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA