如何從泛型字典中擷取具有指定值的多個鍵
.NET 泛型字典提供了一種高效率的方法來檢索與鍵關聯的值,如下面的程式碼所示:
<code class="language-csharp">Dictionary<int, string> greek = new Dictionary<int, string>(); greek.Add(1, "Alpha"); greek.Add(2, "Beta"); string secondGreek = greek[2]; // Beta</code>
但是,檢索與給定值關聯的鍵並不像泛型字典那麼簡單,因為泛型字典只為每個唯一鍵儲存單一鍵值對。當您需要尋找對應於特定值的所有鍵時,這會帶來挑戰,尤其是當多個鍵可能會對應到相同值時。
為了解決這個問題,下面的程式碼實作了一個雙向字典,允許以泛型方式檢索鍵和值:
<code class="language-csharp">using System; using System.Collections.Generic; using System.Text; class BiDictionary<TFirst, TSecond> { IDictionary<TFirst, IList<TSecond>> firstToSecond = new Dictionary<TFirst, IList<TSecond>>(); IDictionary<TSecond, IList<TFirst>> secondToFirst = new Dictionary<TSecond, IList<TFirst>>(); // ... (方法和属性的实现) ... }</code>
這個雙向字典維護兩組鍵值映射:一個是從第一個鍵到第二個值的列表,另一個是從第二個值到第一個鍵的列表。這允許高效地雙向檢索鍵和值。
例如,考慮一個希臘詞彙字典,其中每個希臘字母都分配一個數值。使用雙向字典,您可以輕鬆獲得對應於給定數值的希臘字母,如下所示:
<code class="language-csharp">BiDictionary<int, string> greek = new BiDictionary<int, string>(); greek.Add(1, "Alpha"); greek.Add(2, "Beta"); greek.Add(5, "Beta"); // 检索对应于值“Beta”的希腊字母 IList<int> betaKeys = greek.GetBySecond("Beta"); // 显示结果 Console.WriteLine("Keys for \"Beta\":"); foreach (int key in betaKeys) { Console.WriteLine(key); }</code>
這種方法透過傳回對應於指定值的鍵列表來優雅地處理重複值。它演示了雙向字典在處理多個鍵可能映射到相同值的字典時的多功能性。
以上是如何有效率地檢索字典中與相同值關聯的多個鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!