Sobes.tech
Junior

¿Qué es HashSet en C#?

sobes.tech AI

Respuesta de la IA

HashSet<T> es una colección no ordenada de elementos únicos. Está basada en una tabla hash y proporciona operaciones rápidas de adición, eliminación y verificación de existencia de elementos (en promedio en tiempo constante, O(1)).

Características principales de HashSet<T>:

  • Unicidad: No puede contener duplicados. Al intentar agregar un elemento existente, la operación se ignora.
  • No orden: Los elementos no se almacenan en un orden específico. El orden de iteración puede diferir del orden de inserción.
  • Rendimiento: Gracias al uso de hashing, las operaciones de búsqueda, adición y eliminación tienen en promedio complejidad O(1). En el peor caso (con mala función hash o colisiones), el rendimiento puede disminuir.
  • Operaciones múltiples: Soporta varias operaciones, como unión (UnionWith), intersección (IntersectWith), diferencia (ExceptWith), comprobación de subconjunto o superconjunto (IsSubsetOf, IsSupersetOf).

Ejemplo de uso:

// Creación de HashSet
HashSet<string> fruits = new HashSet<string>();

// Añadir elementos
fruits.Add("apple");
fruits.Add("banana");
fruits.Add("orange");
fruits.Add("apple"); // Será ignorado, ya que "apple" ya existe

// Comprobar existencia de un elemento
bool hasBanana = fruits.Contains("banana"); // true
bool hasGrape = fruits.Contains("grape");   // false

// Eliminar un elemento
fruits.Remove("orange");

// Iterar sobre los elementos
foreach (string fruit in fruits)
{
    // Salida: apple, banana (el orden puede variar)
    Console.WriteLine(fruit);
}

// Tamaño de la colección
int count = fruits.Count; // 2

HashSet<T> implementa las interfaces ICollection<T>, IEnumerable<T> y ISet<T>, lo que permite usarlo en diferentes escenarios de colecciones y realizar operaciones específicas de conjuntos.