汎用辞書から指定された値に対する複数のキーを取得します
.NET 汎用辞書から指定されたキーに基づいて値を取得することは、インデクサー構文を使用することで非常に簡単です。ただし、同じ値を持つキーが複数存在する可能性があるため、指定された値に対応するキーを取得するのはより困難になる可能性があります。
BiDictionary データ構造の概要
この問題を解決するために、キーと値の間の双方向マッピングを可能にする BiDictionary データ構造が開発されました。 2 つの内部辞書を維持します:
実装の詳細
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 中国語 Web サイトの他の関連記事を参照してください。