Sobes.tech
Junior

Wat is HashSet in C#?

sobes.tech AI

Antwoord van AI

HashSet<T> is een niet-gesorteerde verzameling van unieke elementen. Het is gebaseerd op een hash-tabel en biedt snelle bewerkingen voor toevoegen, verwijderen en controleren op aanwezigheid van elementen (gemiddeld in constante tijd, O(1)).

Belangrijkste kenmerken van HashSet<T>:

  • Uniciteit: Kan geen duplicaten bevatten. Bij het proberen toe te voegen van een bestaand element wordt de operatie genegeerd.
  • Niet-gesorteerd: Elementen worden niet in een specifieke volgorde opgeslagen. De iteratievolgorde kan verschillen van de volgorde van toevoegen.
  • Prestaties: Dankzij het gebruik van hashing hebben zoek-, toevoeg- en verwijderbewerkingen gemiddeld O(1) complexiteit. In het slechtste geval (bij slechte hashfunctie of collisions) kan de prestatie afnemen.
  • Meerdere operaties: Ondersteunt verschillende operaties zoals unie (UnionWith), doorsnede (IntersectWith), verschil (ExceptWith), controle op subset of superset (IsSubsetOf, IsSupersetOf).

Voorbeeld van gebruik:

// HashSet aanmaken
HashSet<string> fruits = new HashSet<string>();

// Elementen toevoegen
fruits.Add("appel");
fruits.Add("banaan");
fruits.Add("sinaasappel");
fruits.Add("appel"); // Wordt genegeerd, omdat "appel" al bestaat

// Controleren of een element bestaat
bool hasBanaan = fruits.Contains("banaan"); // true
bool hasDruif = fruits.Contains("druif");   // false

// Element verwijderen
fruits.Remove("sinaasappel");

// Elementen doorlopen
foreach (string fruit in fruits)
{
    // Uitvoer: appel, banaan (volgorde kan variëren)
    Console.WriteLine(fruit);
}

// Grootte van de collectie
int count = fruits.Count; // 2

HashSet<T> implementeert de interfaces ICollection<T>, IEnumerable<T> en ISet<T>, waardoor het in verschillende collectie-scenario's kan worden gebruikt en set-specifieke operaties kan uitvoeren.