Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的Map和HashMap_Java - Fatal编程技术网

java中的Map和HashMap

java中的Map和HashMap,java,Java,我有一张这样的地图 Map<Object,Map<Object,Map<Object,Object>>> mapCurrentMap 还有一张地图: Map<Object,Map<Object,Map<Object,Object>>> copyCurrentMap 现在,我想将所有数据从mapCurrentMap复制到copyCurrentMap,当我更改copyCurrentMap中的数据时,mapCurrentMap

我有一张这样的地图

Map<Object,Map<Object,Map<Object,Object>>> mapCurrentMap
还有一张地图:

Map<Object,Map<Object,Map<Object,Object>>> copyCurrentMap
现在,我想将所有数据从mapCurrentMap复制到copyCurrentMap,当我更改copyCurrentMap中的数据时,mapCurrentMap中的数据不应更改。
我使用了所有HashMap,但它的返回结果不是我想要的。所以,有人可以帮你。

请尝试这样的方法:

Map<Object,Map<Object,Map<Object,Object>>> deepCopy(Map<Object,Map<Object,Map<Object,Object>>> src) {
    final Map<Object,Map<Object,Map<Object,Object>>> dst = new HashMap<Object, Map<Object, Map<Object, Object>>>();
    for (Object key : src.keySet()) {
        final HashMap<Object, Map<Object, Object>> copy = new HashMap<Object, Map<Object, Object>>();
        final Map<Object, Map<Object, Object>> innerMap = src.get(key);
        for (Object innerKey : innerMap.keySet()) {
            Map<Object,Object> innerCopy = new HashMap<Object, Object>(innerMap.get(innerKey));
            copy.put(innerKey, innerCopy);
        }
        dst.put(key, copy);
    }
    return dst;
}

我不确定它是否有效,但我想你明白了。。。您必须将地图复制到最低级别的另一个地图,上面的所有级别都需要使用相同的键从原始->放置到复制

>谢谢您的支持。但是如果我的地图是这样的:map mapCurrentMap所以如果使用这么长时间。我看不到任何其他解决方案。这个想法是,你必须在任何地方都有新的参考,而不是初始地图的参考。我无法想象不浏览所有对象的树怎么可能。对不起,我想我误解了你的评论。长,你的意思是,不是我理解的性能,而是代码行。如果是这样,您可以按照如下所述的类似方式使用递归: