ここではかなり古い質問ですが、他の誰かが私のように脳ブロックを患っていて、これに出くわした場合、うまくいけばこれが役に立ちます.
私も双方向の HashMap を探していましたが、最も役立つのは最も単純な答えである場合があります。
車輪の再発明を望まず、他のライブラリやプロジェクトをプロジェクトに追加したくない場合は、並列配列 (または設計が必要な場合は ArrayLists) の単純な実装はどうでしょうか。
SomeType[] keys1 = new SomeType[NUM_PAIRS];
OtherType[] keys2 = new OtherType[NUM_PAIRS];
2 つのキーのうちの 1 つのインデックスがわかれば、もう 1 つのキーを簡単に要求できます。したがって、ルックアップ メソッドは次のようになります。
SomeType getKey1(OtherType ot);
SomeType getKey1ByIndex(int key2Idx);
OtherType getKey2(SomeType st);
OtherType getKey2ByIndex(int key2Idx);
これは、メソッドのみがこれらの配列/ArrayLists を変更している適切なオブジェクト指向構造を使用していると仮定しています。それらを並列に保つことは非常に簡単です。並行して追加/削除する限り、配列のサイズが変更された場合に再構築する必要がないため、ArrayList の方がさらに簡単です。