HashSet en C# con ejemplos

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);
        }
    }
}
Producción: 

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);
    }
}
Producción: 

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);
        }
    }
}
Producción: 

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);
        }
    }
}
Producción: 

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);
        }
    }
}
Producción: 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *