List 是数组,而其存储的形式是地址
将List A列表复制时,其实相当于A的内容复制给了List B,java中相同内容的数组指向同一地址,即进行浅拷贝后A与B指向同一地址。
浅拷贝:
改变B的同时也会改变A,因为改变B就是改变B所指向地址的内容,由于A也指向同一地址,所以A与B一起改变。浅拷贝如下:
1、循环复制 : listA.add();
2、使用List实现类的构造方法 :listA = new ArrayList
(listB); 3、使用list.addAll()方法
深拷贝:
就是将A复制给B的同时,给B创建新的地址,再将地址A的内容传递到地址B。ListA与ListB内容一致,但是由于所指向的地址不同,所以改变相互不受影响。
如下:通过转换list集合数据
Gson gson=new Gson();
String str=gson.toJson(listB);
if (!StringUtils.isBlank(str)){
listA= gson.fromJson(str, new TypeToken>(){}.getType());
}注:ItemBean为自定义实体类