キーと値の代わりにキーとキーの構造を使用して、2 方向からアクセスできる一種のマップが必要です。これはJavaに存在しますか?そうでない場合、それを作成する最良の方法は何ですか?
例:
mySpecialHashMap.put("key1", "key2");
mySpecialMap.getL2R("key1") returns "key2";
mySpecialMap.getR2L("key2") returns "key1";
キーと値の代わりにキーとキーの構造を使用して、2 方向からアクセスできる一種のマップが必要です。これはJavaに存在しますか?そうでない場合、それを作成する最良の方法は何ですか?
例:
mySpecialHashMap.put("key1", "key2");
mySpecialMap.getL2R("key1") returns "key2";
mySpecialMap.getR2L("key2") returns "key1";
したがって、双方向マップが必要です。これには、 Apache Commons Collections BidiMapまたはGoogle Collections BiMapを使用できます。
Guavaライブラリ (以前は Google Collections と呼ばれていました)のBiMapを参照してください。
HashBiMapが「mySpecialHashMap」として使用される例:
BiMap<String, String> myBiMap = HashBiMap.create();
myBiMap.put("key1", "key2");
myBiMap.get("key1"); // returns "key2"
myBiMap.inverse().get("key2"); // returns "key1"
はい、Google Collections のBiMapがあります。
または可逆的な列挙型については、この Stackoverflow questionを参照してください。