従来のディクショナリはkey-value
ペアを保持します。と が 2 つの異なるタイプのオブジェクトになるkey-key
ペアを保持するものが必要です。例えば、key1
key2
SourceIdentity key1 = dict[key2]; //key2 index gives key1 value
TargetIdentity key2 = dict[key1]; //key1 index gives key2 value
言い換えれば、両方のキーがもう一方の値を生成する必要があり、一種の双方向アクセスです。他の方法と同じように値を追加します。
dict.Add(s, t);
key1s と key2s は keys であるため、重複はありません。
これは私が考えることができるものですが、もっと軽い方法があると思います:
public class FunnyDictionary
{
var key1Dict = new Dictionary<SourceIdentity, TargetIdentity>();
var key2Dict = new Dictionary<TargetIdentity, SourceIdentity>();
public void Add(SourceIdentity key1, TargetIdentity key2)
{
key1Dict[key1] = key2;
key2Dict[key2] = key1;
}
//remaining part..
}
私はこの質問を見ました c#のマルチキー辞書? しかし、今の私の状況のようなものは何もありません。値にすばやくアクセスできるように辞書が必要です。それ以外の場合は、回避できると感じるたびにコレクションを列挙する必要があります。コレクションには 10000 を超えるエントリがあります。これは私が持つことができる最も軽いですか?他の方法でよりシンプルまたはより良いものはありますか?