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.