Вы можете сделать простую реализацию, как это.Обратите внимание, что данные не копируются в этой реализации.Только ссылки есть!Я добавил реализацию для добавления и получения.удалить и другой необходимый метод оставлен в качестве упражнения:)
public class TwoWayHashmap<K extends Object, V extends Object> {
private Map<K,V> forward = new Hashtable<K, V>();
private Map<V,K> backward = new Hashtable<V, K>();
public synchronized void add(K key, V value) {
forward.put(key, value);
backward.put(value, key);
}
public synchronized V getForward(K key) {
return forward.get(key);
}
public synchronized K getBackward(V key) {
return backward.get(key);
}
}
И, конечно, его приложения несут ответственность за соблюдение даже «значений» уникальными.Пример использования:
TwoWayHashmap twmap = new TwoWayHashmap<String, String>();
twmap.add("aaa", "bbb");
twmap.add("xxx", "yyy");
System.out.println(twmap.getForward("xxx"));
System.out.println(twmap.getBackward("bbb"));