双向地图

2022-08-31 14:31:54

你能建议一种映射或类似的数据结构,我们可以同样轻松地从彼此获得值和键。也就是说,每个人都可以用来寻找其他的。


答案 1

Java在其标准库中没有双向映射。

例如,使用来自Google Guava的BiMap<K,V>


答案 2

如果您觉得导入一些第三方库很痛苦。这个简单的类怎么样。

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);
    }

}

确保 K 和 V 类具有正确的哈希码实现。