Doppelte Schlüssel in .NET-Wörterbüchern verwalten
Die Verwaltung doppelter Schlüssel in Wörterbüchern ist in vielen Programmierszenarien eine häufige Herausforderung. In der .NET-Basisklassenbibliothek erzwingen Wörterbücher normalerweise eine Eindeutigkeitsbeschränkung für Schlüssel und verhindern so die Speicherung mehrerer Werte, die demselben Schlüssel zugeordnet sind. Es gibt jedoch Möglichkeiten, diese Einschränkung zu überwinden und in einigen Fällen doppelte Schlüssel zu berücksichtigen.
Verwenden einer benutzerdefinierten Klasse
Ein Ansatz besteht darin, eine benutzerdefinierte Wörterbuchklasse zu erstellen, die dies ermöglicht Doppelschlüssel. Wie in der Frage erwähnt, kann eine Klasse wie Dictionary
Suchklasse in .NET 3.5 und höher
Wenn Sie .NET 3.5 oder höher verwenden, ist die Die Lookup-Klasse bietet eine elegantere Lösung. Die Lookup-Klasse ist ein generischer Typ, der eine Sammlung von Schlüsseln und den entsprechenden Werten erstellt. Wichtig ist, dass es doppelte Schlüssel zulässt und die mit demselben Schlüssel verknüpften Werte gruppiert.
Sie können eine Lookup-Instanz mit der Erweiterungsmethode Enumerable.ToLookup erstellen. Diese Methode nimmt eine Folge von Schlüssel-Wert-Paaren und gibt einen Lookup mit den Schlüsseln als Primärschlüssel und den in ihren jeweiligen Sammlungen gespeicherten Werten zurück.
var lookup = sequence.ToLookup(keySelector, valueSelector);
Der folgende Code erstellt beispielsweise einen Lookup aus a Wörterbuch, in dem die Schlüssel Zeichenfolgen und die Werte Listen von Ganzzahlen sind:
var dictionary = new Dictionary<string, List<int>> { { "key1", new List<int> { 1, 2 } }, { "key2", new List<int> { 3, 4 } } }; var lookup = dictionary.ToLookup(x => x.Key, x => x.Value);
Sobald Sie eine Lookup-Instanz haben, können Sie mit dem []-Operator auf die mit einem Schlüssel verknüpften Werte zugreifen oder die GetValues-Methode. Der []-Operator gibt eine Liste von Werten zurück, während GetValues ein IEnumerable
Einschränkungen der Lookup-Klasse
Es ist wichtig zu beachten, dass die Lookup-Klasse unveränderlich ist. Nach der Erstellung können Sie keine Schlüssel oder Werte mehr hinzufügen oder entfernen. Sie können jedoch eine neue Lookup-Instanz mit den gewünschten Änderungen erstellen. Darüber hinaus unterstützt die Lookup-Klasse keine gleichzeitigen Änderungen. Wenn Sie gleichzeitigen Zugriff benötigen, sollten Sie die Verwendung eines ConcurrentDictionary in Betracht ziehen.
Fazit
Während die .NET-Basisklassenbibliothek keinen integrierten Wörterbuchtyp bereitstellt, der Duplikate explizit unterstützt Schlüssel bietet die Lookup-Klasse in .NET 3.5 und höher eine praktische und effiziente Lösung zum Gruppieren und Abrufen von Werten, die mit doppelten Schlüsseln verknüpft sind.
Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Schlüssel in .NET-Wörterbüchern verwalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!