题记
我现在遇到一个场景,需要把一个map放到list中,比如变成一个十条数据的list,其中大部分的数据是一样的,只有一个字段是不同的,如果只是建好一个map,去修改那某一个值,那最后整个List里的map的那个值都会是最后赋值的值,因为他们在内存中指向的地址都是一样的。
解决方案
网上找了很多,随便试了一个可以,就拿过来了,山不在高,有仙则灵。
map.putAll();
public static void main(String[] args) {
Map<String,String> data = new HashMap<>();
data.put("key1","123");
data.put("key2","456");
Map<String,String> newData = new HashMap<>();
newData.putAll(data);
data.put("key1","abc");
System.out.println(data);
System.out.println(newData);
}
结果:
{key1=abc, key2=456}
{key1=123, key2=456}
结论
其实再往下就是深拷贝和浅拷贝的问题了,目前我对这个的了解自认为不是很全面和正确,所以不做这块知识的分享,只是我个人认为其中最大的区别就是是否也拷贝引用地址