地图地图 - 将价值放在内部地图上

时间:2014-05-30 12:16:31

标签: java dictionary hashmap

我有地图地图

Map<String, Map<String,Integer>> outerMap = new HashMap<String, Map<String, Integer>>();

我希望将一些值放到内部地图上。这是正确的方法吗?或者它可以做得更好?

class SampleMap {
    Map<String, Map<String, Integer>> outerMap = new HashMap<String, Map<String, Integer>>();

    public void add(String outerKey, String innerKey, Integer value) {
        Map<String, Integer> tempMap = new HashMap<String, Integer>();
        if (outerMap.size() > 0)
            tempMap = outerMap.get(outerKey);
        tempMap.put(innerKey, value);
        outerMap.put(key, tempMap);
    }
}

2 个答案:

答案 0 :(得分:3)

您可以通过避免急切地创建新的内部地图来改进代码,直到您知道必须创建它为止。

此外,如果你知道内部地图实例来自外部地图,你就不必花时间把它放回原来的地方。

public void add(String outerKey, String innerKey, Integer value) {
    Map<String, Integer> tempMap
    if (outerMap.containsKey(outerKey)) {
        tempMap = outerMap.get(outerKey);
    } else {
        tempMap = new HashMap<String, Integer>();
        outerMap.put(outerKey, tempMap);
    }
    tempMap.put(innerKey, value);
}

答案 1 :(得分:1)

从技术上讲,你的代码没有任何问题(除了dasblinkenlight建议的一个小改进),但你真正需要的是地图图吗?

如果您想通过两个键读取/写入值,可能最好从两个键对中创建映射(可以使用MultiKeyPair实现)或其他数据结构(请参阅此评论详情https://stackoverflow.com/a/3093993/554281