.NET Generic Dictionary: Umgang mit mehreren Schlüsseln für einen einzelnen Wert
Standard .NET Dictionary
-Objekte bieten einen einfachen Schlüssel-zu-Wert-Zugriff. Allerdings wird das Abrufen von Schlüsseln, die einem bestimmten Wert zugeordnet sind, komplex, wenn mehrere Schlüssel demselben Wert zugeordnet sind. In diesem Artikel wird eine Lösung mit einem benutzerdefinierten bidirektionalen Wörterbuch vorgestellt.
Erstellen eines bidirektionalen Wörterbuchs
Um diese Einschränkung zu überwinden, erstellen wir eine BiDictionary<TFirst, TSecond>
-Klasse. Diese Klasse verwaltet Schlüssel-Wert-Beziehungen in beide Richtungen und verwendet dazu zwei interne Wörterbücher: firstToSecond
(Schlüssel zu Wert) und secondToFirst
(Wert zu Schlüssel).
Einträge hinzufügen und auf Daten zugreifen
Die Add
-Methode verwaltet das Hinzufügen neuer Schlüssel-Wert-Paare effizient. Es sucht nach vorhandenen Einträgen und erstellt bei Bedarf neue Listen, um mehrere Schlüssel für einen einzelnen Wert zu speichern.
Die BiDictionary
-Klasse stellt Indexer sowohl für den Schlüssel-zu-Wert- als auch für den Wert-zu-Schlüssel-Zugriff bereit. Um Mehrdeutigkeiten zu vermeiden, sind auch spezielle Methoden GetByFirst
und GetBySecond
enthalten.
Anschauliches Beispiel
Betrachten wir ein praktisches Beispiel:
<code class="language-C#">BiDictionary<int, string> greek = new BiDictionary<int, string>(); greek.Add(1, "Alpha"); greek.Add(2, "Beta"); greek.Add(5, "Beta"); ShowEntries(greek, "Alpha"); // Output: Alpha: [1] ShowEntries(greek, "Beta"); // Output: Beta: [2, 5] ShowEntries(greek, "Gamma"); // Output: Gamma: []</code>
Die ShowEntries
-Methode demonstriert das Abrufen von Schlüsseln für einen bestimmten Wert. Beachten Sie, dass „Beta“ beide zugehörigen Schlüssel (2 und 5) korrekt zurückgibt. Dies zeigt die Fähigkeit des bidirektionalen Wörterbuchs, mehrere Schlüssel pro Wert zu verarbeiten.
Das obige ist der detaillierte Inhalt vonWie kann ich effizient mehrere Schlüssel abrufen, die einem einzelnen Wert in einem .NET-Wörterbuch zugeordnet sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!