HashMap<String,Integer> map= new HashMap<String,Integer>();
map.put("first",1);
map.put("second",2);
map.put("third",3);
HashMap<String,Integer> map2= new HashMap<String,Integer>();
map2= map.clone();
我的问题是如何将项目从地图转移到地图2?我的代码对吗?
很简单。使用参数化构造函数
HashMap<String,Integer> map2= new HashMap<String,Integer>(map);
你可以这样做:
HashMap<String,Integer> map2= new HashMap<String,Integer>();
map2.putAll(map);
或者
HashMap<String,Integer> map2= new HashMap<String,Integer>(map);
请注意,在这两种方法中,键和值都不会重复,而只是被两者引用HashMap
。
如果您正在查看以前映射的深层副本,请使用复制构造函数, clone 是此 HashMap 实例的浅表副本:键和值本身没有被克隆。
如果您想要以前地图的浅表副本,则可以使用pass the map reference to your new map constructor
而不是clone
方法。
HashMap<String,Integer> map2= new HashMap<>(map);
对克隆方法 find SO有烦恼 。
如果你读过我书中关于克隆的项目,尤其是如果你读到字里行间,你就会知道我认为克隆被严重破坏了。[...] 很遗憾 Cloneable 被破坏了,但它确实发生了。