Sobes.tech
Junior

Was ist HashSet in C#?

sobes.tech KI

Antwort von AI

HashSet<T> ist eine ungeordnete Sammlung einzigartiger Elemente. Es basiert auf einer Hashtabelle und bietet schnelle Operationen zum Hinzufügen, Entfernen und Überprüfen der Elemente (im Durchschnitt in konstanter Zeit, O(1)).

Hauptmerkmale von HashSet<T>:

  • Einzigartigkeit: Kann keine Duplikate enthalten. Beim Versuch, ein vorhandenes Element hinzuzufügen, wird die Operation ignoriert.
  • Unordnung: Die Elemente werden in keiner bestimmten Reihenfolge gespeichert. Die Iterationsreihenfolge kann von der Einfügereihenfolge abweichen.
  • Leistung: Dank der Verwendung von Hashing haben Such-, Hinzufügungs- und Löschoperationen im Durchschnitt die Komplexität O(1). Im schlimmsten Fall (bei schlechter Hash-Funktion oder Kollisionen) kann die Leistung sinken.
  • Mehrere Operationen: Unterstützt verschiedene Operationen wie Vereinigung (UnionWith), Schnittmenge (IntersectWith), Differenz (ExceptWith), Überprüfung auf Teilmenge oder Obermenge (IsSubsetOf, IsSupersetOf).

Beispiel für die Verwendung:

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

// Elemente hinzufügen
fruits.Add("Apfel");
fruits.Add("Banane");
fruits.Add("Orange");
fruits.Add("Apfel"); // Wird ignoriert, da "Apfel" bereits vorhanden ist

// Überprüfung, ob ein Element vorhanden ist
bool hasBanana = fruits.Contains("Banane"); // true
bool hasGrape = fruits.Contains("Traube");   // false

// Element entfernen
fruits.Remove("Orange");

// Elemente durchlaufen
foreach (string fruit in fruits)
{
    // Ausgabe: Apfel, Banane (Reihenfolge kann variieren)
    Console.WriteLine(fruit);
}

// Größe der Sammlung
int count = fruits.Count; // 2

HashSet<T> implementiert die Schnittstellen ICollection<T>, IEnumerable<T> und ISet<T>, was die Verwendung in verschiedenen Sammlungsszenarien und die Ausführung spezifischer Mengenoperationen ermöglicht.