最近工作中用到map的深度拷贝和浅拷贝,看了一篇文章,发现有错。故研究了一下。
public static void main(String[] args) {
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("name", "Marydon");
Map<String, String> paramMap2 = new HashMap<String, String>();
paramMap2 = paramMap;
paramMap.remove("name");
System.out.println(paramMap2);
// paramMap2.putAll(paramMap);
// paramMap.remove("name");
// System.out.println(paramMap2);
}
利用“=”,结果为:
public static void main(String[] args) {
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("name", "Marydon");
Map<String, String> paramMap2 = new HashMap<String, String>();
// paramMap2 = paramMap;
// paramMap.remove("name");
// System.out.println(paramMap2);
paramMap2.putAll(paramMap);
paramMap.remove("name");
System.out.println(paramMap2);
}
利用putAll:
结论:“=”是浅拷贝,putAll是深拷贝。
同理,list经过试验也是一样的。