-
- 1. “=”赋值
-
2. 使用.putAll()方法
-
3. 使用.clone()方法
-
测试用例
-
测试用例源码
===================================================================
在我们最初使用map复制开发业务代码时,通常会踩到深浅复制(拷贝)这个坑里,比如我,在Map复制时
(如:Map<String, String> new_Map = old_Map) 出现过以下两类问题:
1.使用Map<String, String> new_Map = old_Map 操作,当修改new_Map属性后,old_Map属性也跟着变了,但我并没有修改过old_Map;
2.由于Map中的value值不仅有基本数据类型,还有引用数据类型,所以当我修改引用类型属性后,new_Map和old_Map的引用变量值都发生变化;(如你的value都是基本类型,就不涉及深浅拷贝的问题)
=====================================================================
新建一个Map,然后使用“=”直接赋值,这样只是复制了old_Map的引用,和old_Map仍使用同一个内存区域,所以,在修改new_Map的时候,old_Map的值同样会发生变化。
<Map<String, String> new_Map = old_Map>
上述的办法不行,使用Map本身提供的方法,网上大都说putAll()和clone()方法就是深拷贝