How to create a 2 way map in java
data-structures, java
Solution
It seems like you may be looking for a bimap.
The Google Collections (now a part of Guava) contains an `BiMap` interface with a few implementations.
From the `BiMap` documentation:
A bimap (or "bidirectional map") is a map that preserves the uniqueness of its values as well as that of its keys. This constraint enables bimaps to support an "inverse view", which is another bimap containing the same entries as this bimap but with reversed keys and values.
The `BiMap.inverse` method appears to return a `Map` with the values as the keys, and the keys as the values, so that `Map` can be used to call `get` on the value and retrieve a key.
In addition the `Map` returned by `inverse` is a view of the underlying data, so it does not have to make extra copies of the original data.
From the `BiMap.inverse` method documentation:
Returns the inverse view of this bimap, which maps each of this bimap's values to its associated key. The two bimaps are backed by the same data; any changes to one will appear in the other.
Problem
I need a data structure to store string-int value pairs in an 1:1 relationship, and being able too look up from either way their counterpart. I wrote a class with a Hashtable and a String array and stored the data 2 times and used the built in functions for lookup. My question is that is there a nicer way to accomplish this? And by nicer I mean being efficient and not storing the data 2 times, and preferably without writing a ton of code either :P.