浅拷贝:举个例子,我有一个集合list,里面放着map,我需要复制一个一模一样的集合,来进行修改里面的值,不动原始集合,因为原始集合,我后面逻辑会用到,一般情况下,直接将它赋值给另一个空集合,或者通过for循环将里面的map循环add一个空集合里面。程序正常执行,看不出来有什么毛病。当我们操作这个通过for循环的来的集合时,如果进行修改或者删除,原始集合也会跟着改动。意思时是说,我们新集合add进去的是原始集合的map地址。并不是一个全新的没有任何关联的对象。所以当我们改动一个新集合时,旧集合也会随着改动。
深拷贝:深拷贝就是解决浅拷贝带来的问题。创建一个全新的集合。
/**
*将list对象进行深拷贝
* @param list
* * @return
* */
private List<Map<String,Object>> deepCopyList(List<Map<String,Object>> list) {
List<Map<String, Object>> rList =new ArrayList<>();
for (Map<String, Object> maps : list) {
Map<String, Object> map = new HashMap<String, Object>();
Set entries = maps.entrySet();
Iterator iterator = entries.iterator();
while(iterator.hasNext()){
Map.Entry entry = (Entry) iterator.next();
map.put((String) entry.getkey(), entry.getValue ());
}
rList. add(map);
}
return rList;
}