Jav*_*tor 25
如果您觉得导入某些第三方库很痛苦.这个简单的课怎么样?
public class BiMap<K,V> {
HashMap<K,V> map = new HashMap<K, V>();
HashMap<V,K> inversedMap = new HashMap<V, K>();
void put(K k, V v) {
map.put(k, v);
inversedMap.put(v, k);
}
V get(K k) {
return map.get(k);
}
K getKey(V v) {
return inversedMap.get(v);
}
}
Run Code Online (Sandbox Code Playgroud)
确保K和V类具有正确的hashCode实现.
Jon*_*oni 13
最常见的解决方案是使用两张地图.您可以通过扩展将它们轻松地封装在具有友好界面的类中AbstractMap
.(更新:这是Guava的HashBiMap
实现方式:两张地图)
除了数组和自定义类之外什么都不创建新的数据结构几乎没有什么优势.映射实现是索引键的数据结构的轻量级包装器.由于您需要两个索引,因此您可以使用两个完整的映射.