map的深度拷贝和浅度拷贝

最近工作中用到map的深度拷贝和浅拷贝,看了一篇文章,发现有错。故研究了一下。

    public static void main(String[] args) {
        Map paramMap = new HashMap();
        paramMap.put("name", "Marydon");
        Map paramMap2 = new HashMap();
        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 paramMap = new HashMap();
        paramMap.put("name", "Marydon");
        Map paramMap2 = new HashMap();
//        paramMap2 = paramMap;
//        paramMap.remove("name");
//        System.out.println(paramMap2);
        paramMap2.putAll(paramMap);
        paramMap.remove("name");
        System.out.println(paramMap2);
    }

利用putAll:

map的深度拷贝和浅度拷贝_第1张图片

结论:“=”是浅拷贝,putAll是深拷贝。

同理,list经过试验也是一样的。

你可能感兴趣的:(map的深度拷贝和浅度拷贝)