1
  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?我的代码对吗?

4

3 回答 3

7

很简单。使用参数化构造函数

  HashMap<String,Integer> map2= new HashMap<String,Integer>(map);
于 2013-08-20T06:18:51.260 回答
3

你可以这样做:

HashMap<String,Integer> map2= new HashMap<String,Integer>();
map2.putAll(map);

或者

HashMap<String,Integer> map2= new HashMap<String,Integer>(map);

请注意,在这两种方法中,键和值都不会重复,而只是被两者引用HashMap

于 2013-08-20T06:19:30.223 回答
1

如果您正在查看以前映射的深层副本,请使用复制构造函数, clone 是此 HashMap 实例的浅表副本:键和值本身没有被克隆

如果您想要以前地图的浅表副本,则可以使用pass the map reference to your new map constructor而不是clone方法。

HashMap<String,Integer> map2= new HashMap<>(map);

对克隆方法 find SO有烦恼 。

Josh Bloch 谈设计 - 复制构造函数与克隆

如果你读过我书中关于克隆的项目,尤其是如果你读到字里行间,你就会知道我认为克隆被严重破坏了。[...] 很遗憾 Cloneable 被破坏了,但它确实发生了。

于 2013-08-20T06:22:09.967 回答