Sobes.tech
Junior

O que é HashSet em C#?

sobes.tech IA

Resposta da IA

HashSet<T> é uma coleção não ordenada de elementos únicos. Baseia-se numa tabela de hash e fornece operações rápidas de adição, remoção e verificação de existência de elementos (em média, em tempo constante, O(1)).

Principais características do HashSet<T>:

  • Unicidade: Não pode conter duplicados. Ao tentar adicionar um elemento existente, a operação é ignorada.
  • Não ordenado: Os elementos não são armazenados numa ordem específica. A ordem de iteração pode diferir da ordem de inserção.
  • Desempenho: Graças ao uso de hashing, as operações de busca, adição e remoção têm, em média, complexidade O(1). No pior caso (com má função de hash ou colisões), o desempenho pode diminuir.
  • Operações múltiplas: Suporta várias operações, como união (UnionWith), interseção (IntersectWith), diferença (ExceptWith), verificação de subconjunto ou superconjunto (IsSubsetOf, IsSupersetOf).

Exemplo de uso:

// Criação de HashSet
HashSet<string> fruits = new HashSet<string>();

// Adicionar elementos
fruits.Add("maçã");
fruits.Add("banana");
fruits.Add("laranja");
fruits.Add("maçã"); // Será ignorado, pois "maçã" já existe

// Verificar existência de um elemento
bool hasBanana = fruits.Contains("banana"); // true
bool hasGrape = fruits.Contains("uva");   // false

// Remover um elemento
fruits.Remove("laranja");

// Iterar sobre os elementos
foreach (string fruit in fruits)
{
    // Saída: maçã, banana (a ordem pode variar)
    Console.WriteLine(fruit);
}

// Tamanho da coleção
int count = fruits.Count; // 2

HashSet<T> implementa as interfaces ICollection<T>, IEnumerable<T> e ISet<T>, permitindo usá-lo em vários cenários de coleções e realizar operações específicas de conjuntos.