首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >地图地图.内部地图的值

地图地图.内部地图的值
EN

Stack Overflow用户
提问于 2014-05-30 12:16:31
回答 2查看 587关注 0票数 1

我有地图

代码语言:javascript
运行
复制
Map<String, Map<String,Integer>> outerMap = new HashMap<String, Map<String, Integer>>();

我想把一些价值放在内部地图上。这样做对吗?还是可以做得更好?

代码语言:javascript
运行
复制
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);
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-30 12:19:26

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

此外,如果您知道内部map实例来自外部映射,则无需花费时间将其放回原来的位置。

代码语言:javascript
运行
复制
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);
}
票数 4
EN

Stack Overflow用户

发布于 2014-05-30 12:27:31

从技术上讲,您的代码中没有什么问题(除了dasblinkenlight建议的一个小改进),但是地图地图是否符合您的实际需要呢?

如果您想用两个键来读取/写入值,最好是从一对两个键(可以使用MultiKey配对实现)或另一个数据结构创建映射(详细信息,请参阅此注释https://stackoverflow.com/a/3093993/554281)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23954422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档