CollectionDictionary-Klasse

Eine Dictionary-Implementierung, die für jeden Schlüssel mehrere Werte speichert.

Die Dictionary-Klasse ist eine der meistgenutzten Datenstrukturen in .NET-Anwendungen. Sie ermöglicht es, zu jedem Schlüssel einen einzelnen Wert zu speichern. Diese 1:1-Verknüpfung ist meistens ausreichend. Manchmal muss man jedoch mehrere Werte unter einem Schlüssel ablegen. Diesem Zweck dient diese einfache CollectionDictionary-Klasse. Sie ist eine direkte Ableitung von Dictionary<TKey, ICollection<TValue>> und fügt weitere Methoden hinzu, um mit den mehrwertigen Einträgen umzugehen. Da keine Methoden überschrieben oder ausgeblendet werden, steht auch die zugrundeliegende Dictionary-Struktur zur Verfügung. In diesem Fall erhält man ein Dictionary mit einer Sammlung (ICollection) als Wert.

Kompatibilität: .NET Ab Version 4.0

Beispiel

Die folgenden Beispielcode-Schnipsel zeigen, wie die CollectionDictionary-Klasse verwendet werden kann:

// Neue Instanz erstellen
var dict = new CollectionDictionary<string, string>();

// Neue Instanz aus vorhandenem Dictionary erstellen
var simpleDict = new Dictionary<string, int>();
var dict2 = new CollectionDictionary<string, int>(simpleDict);

// Neue Schlüssel mit einem Wert hinzufügen
dict.Add("Deutschland", "Berlin");
dict.Add("Frankreich", "Paris");
dict.Add("Italien", "Rom");

// Zusätzliche Werte zu vorhandenen Schlüsseln hinzufügen
dict.Add("Deutschland", "München");
dict.Add("Deutschland", "Köln");
dict.AddRange("Frankreich", new[] { "Reims", "Marseille", "Toulouse" });

// Einen Schlüssel mit allen Werten entfernen (von Dictionary geerbt)
dict.Remove("Italien");

// Einen Wert entfernen
// (Ein Schlüssel ohne verbleibenden Wert wird automatisch gelöscht)
dict.RemoveValue("Deutschland", "Köln");

// Alle Werte eines vorhandenen Schlüssels abrufen
foreach (string city in dict["Deutschland"])
{
    Console.WriteLine(city);
}

// Alle Werte eines Schlüssels abrufen (vorhanden oder nicht)
foreach (string city in dict.GetValuesOrEmpty("Deutschland"))
{
    Console.WriteLine(city);
}

// Anzahl der Schlüssel und Werte abrufen
int keyCount = dict.Count;
int valueCount = dict.ValueCount;

// Nach einem Schlüssel suchen (von Dictionary geerbt)
bool countryExists = dict.Contains("Frankreich");

// Nach einem Wert suchen
bool cityExists = dict.ContainsValue("Marseille");

Download

CollectionDictionary.cs7,7 KiBQuelltext der CollectionDictionary-Klasse

Lizenz und Nutzungsbedingungen

Vervielfältigung und Weiterverbreitung dieser Datei, verändert oder unverändert, sind gestattet, vorausgesetzt die Urheberrechtsangabe und dieser Hinweis bleiben erhalten. Diese Datei wird wie vorliegend ohne jegliche Garantie oder Gewährleistung angeboten. (GNU All-Permissive-Lizenz)

Statistische Daten

  • Erstellt am 2014-09-18, aktualisiert am 2015-01-25.
  • Ca. 110 Codezeilen, geschätzte Ent­wick­lungs­kos­ten: 110 - 440 €