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.