首頁 >後端開發 >C++ >如何檢索與通用字典中的單一值關聯的多個鍵?

如何檢索與通用字典中的單一值關聯的多個鍵?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-21 03:42:10778瀏覽

How Can I Retrieve Multiple Keys Associated with a Single Value in a Generic Dictionary?

從泛型字典中擷取給定值的多個鍵

使用索引器語法從 .NET 泛型字典中基於給定鍵檢索值非常簡單。但是,由於可能存在多個鍵具有相同的值,因此檢索與指定值對應的鍵可能會更具挑戰性。

介紹 BiDictionary 資料結構

為了解決這個問題,開發了 BiDictionary 資料結構,允許在鍵和值之間進行雙向映射。它維護兩個內部字典:

  • firstToSecond:將第一個類型鍵對應到第二個類型值的清單。
  • secondToFirst:將第二型別值對應到第一型別鍵的清單。

實作細節

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn