问题
I need a kind of map which is accessible in two directions, so with a key-key structure instead of key-value. Does this exist in Java? If not, what is the best way to create it?
So example:
mySpecialHashMap.put("key1", "key2");
mySpecialMap.getL2R("key1") returns "key2";
mySpecialMap.getR2L("key2") returns "key1";
回答1:
So you want a bidirectional map. You can use Apache Commons Collections BidiMap or Google Collections BiMap for this.
回答2:
You might want to look at BiMap from the Guava library (formerly known as Google Collections).
An example where a HashBiMap is used as the "mySpecialHashMap":
BiMap<String, String> myBiMap = HashBiMap.create();
myBiMap.put("key1", "key2");
myBiMap.get("key1"); // returns "key2"
myBiMap.inverse().get("key2"); // returns "key1"
回答3:
Yes, there is BiMap from Google Collections.
回答4:
Or for reversible enums see this Stackoverflow question.
来源:https://stackoverflow.com/questions/1680463/java-key-key-map