Sobes.tech
Junior

Qu'est-ce que HashSet en C#?

sobes.tech IA

Réponse de l'IA

HashSet<T> est une collection non ordonnée d'éléments uniques. Elle est basée sur une table de hachage et offre des opérations rapides d'ajout, de suppression et de vérification de la présence d'éléments (en moyenne en temps constant, O(1)).

Caractéristiques principales de HashSet<T> :

  • Unicité : Ne peut pas contenir de doublons. Lorsqu'on tente d'ajouter un élément existant, l'opération est ignorée.
  • Non ordonné : Les éléments ne sont pas stockés dans un ordre spécifique. L'ordre d'itération peut différer de l'ordre d'ajout.
  • Performance : Grâce à l'utilisation du hachage, les opérations de recherche, d'ajout et de suppression ont en moyenne une complexité O(1). En cas défavorable (mauvaise fonction de hachage ou collisions), la performance peut diminuer.
  • Opérations multiples : Supporte plusieurs opérations, telles que l'union (UnionWith), l'intersection (IntersectWith), la différence (ExceptWith), la vérification de sous-ensemble ou de super-ensemble (IsSubsetOf, IsSupersetOf).

Exemple d'utilisation :

// Création de HashSet
HashSet<string> fruits = new HashSet<string>();

// Ajout d'éléments
fruits.Add("pomme");
fruits.Add("banane");
fruits.Add("orange");
fruits.Add("pomme"); // Ignoré, car "pomme" existe déjà

// Vérification de la présence d'un élément
bool hasBanana = fruits.Contains("banane"); // true
bool hasGrape = fruits.Contains("raisin");   // false

// Suppression d'un élément
fruits.Remove("orange");

// Parcours des éléments
foreach (string fruit in fruits)
{
    // Affichage : pomme, banane (l'ordre peut varier)
    Console.WriteLine(fruit);
}

// Taille de la collection
int count = fruits.Count; // 2

HashSet<T> implémente les interfaces ICollection<T>, IEnumerable<T> et ISet<T>, permettant son utilisation dans divers scénarios de collections et l'exécution d'opérations spécifiques aux ensembles.