我有地图地图
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);
}
}
答案 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建议的一个小改进),但你真正需要的是地图图吗?
如果您想通过两个键读取/写入值,可能最好从两个键对中创建映射(可以使用MultiKey或Pair实现)或其他数据结构(请参阅此评论详情https://stackoverflow.com/a/3093993/554281)