從泛型字典中擷取給定值的多個鍵
使用索引器語法從 .NET 泛型字典中基於給定鍵檢索值非常簡單。但是,由於可能存在多個鍵具有相同的值,因此檢索與指定值對應的鍵可能會更具挑戰性。
介紹 BiDictionary 資料結構
為了解決這個問題,開發了 BiDictionary 資料結構,允許在鍵和值之間進行雙向映射。它維護兩個內部字典:
實作細節
BiDictionary 類別提供方法來新增鍵值對並基於任一鍵類型檢索值。例如:
<code class="language-csharp">BiDictionary<int, string> greek = new BiDictionary<int, string>(); greek.Add(1, "Alpha"); greek.Add(2, "Beta"); greek.Add(5, "Beta"); IList<int> betaKeys = greek["Beta"]; // 返回 [2, 5]</code>
實作使用空列表作為不存在鍵的預設回傳值,確保您始終收到一個列表,即使它是空的。
可自訂索引器
為方便起見,BiDictionary 包括可自訂的索引器,這些索引器可根據呼叫鍵類型直接存取內部字典。這透過允許您使用索引器語法來簡化對值的存取:
<code class="language-csharp">BiDictionary<int, string> greek = new BiDictionary<int, string>(); greek.Add(1, "Alpha"); greek.Add(2, "Beta"); string secondGreek = greek[2]; // 返回 "Beta"</code>
範例用法
提供的程式碼示範了 BiDictionary 的功能:
<code class="language-csharp">BiDictionary<int, string> greek = new BiDictionary<int, string>(); greek.Add(1, "Alpha"); greek.Add(2, "Beta"); greek.Add(5, "Beta"); ShowEntries(greek, "Alpha"); // 打印 "Alpha: [1]" ShowEntries(greek, "Beta"); // 打印 "Beta: [2, 5]" ShowEntries(greek, "Gamma"); // 打印 "Gamma: []"</code>
此範例示範如何檢索與給定值對應的鍵,並且它透過傳回空列表優雅地處理不存在的值的情況。
以上是如何檢索與通用字典中的單一值關聯的多個鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!