.NET 汎用ディクショナリ: 単一の値に対する複数のキーの処理
標準 .NET Dictionary
オブジェクトは、キーから値への簡単なアクセスを提供します。 ただし、複数のキーが同じ値にマップされる場合、特定の値に関連付けられたキーの取得は複雑になります。この記事では、カスタム双方向辞書を使用したソリューションを紹介します。
双方向辞書の構築
この制限を克服するために、BiDictionary<TFirst, TSecond>
クラスを作成します。 このクラスは、2 つの内部辞書 firstToSecond
(キーから値) と secondToFirst
(値からキー) を使用して、両方向のキーと値の関係を管理します。
エントリの追加とデータへのアクセス
Add
メソッドは、新しいキーと値のペアの追加を効率的に処理します。既存のエントリをチェックし、必要に応じて新しいリストを作成して、単一の値に対して複数のキーを保存します。
BiDictionary
クラスは、キーから値へのアクセスと値からキーへのアクセスの両方のためのインデクサーを提供します。 曖昧さを避けるために、専用のメソッド GetByFirst
と GetBySecond
も含まれています。
具体例
実際的な例を考えてみましょう:
<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>
ShowEntries
メソッドは、指定された値のキーを取得する方法を示します。 「Beta」が両方の関連付けられたキー (2 と 5) を正しく返すことに注目してください。 これは、値ごとに複数のキーを処理できる双方向辞書の機能を示しています。
以上が.NET ディクショナリ内の単一の値に関連付けられた複数のキーを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。