This example will demonstrate Guava’s BiMap. A bidirectional map, is a map that preserves the uniqueness of its values as well as that of its keys. This allows an inverse view which maps each of this bimap's values to its associated key. Guava has mutliple implementation types such as HashBiMap, ImmutableBiMap, EnumBiMap and EnumHashBiMap.
If you grew up in Wisconsin there is a dialect or "how to speak Wisconsin" that many folks try to understand. We will use this in the example below to map what a non Wisconsinite would say to what a Wisconsinite would say.
Google Guava
Output
Straight up Java
This is to illustrate how a bi-directional map could be implemented in java. In the example below you could create a generic method that handles the inverse.