根据一个List生成另外一个List,修改其中一个,导致另外一个List也在变化

1、两个List复制

SysDic aSysDic = new SysDic();

aSysDic.setDkey("1");

aSysDic.setDnote("12");

SysDic bSysDic = new SysDic();

bSysDic.setDkey("2");

bSysDic.setDnote("23");

SysDic cSysDic = new SysDic();

cSysDic.setDkey("3");

cSysDic.setDnote("34");

List<SysDic> asList = new ArrayList<>();

asList.add(aSysDic);

asList.add(bSysDic);

asList.add(cSysDic);

List<SysDic> bsList = new ArrayList<>(asList);

for (SysDic dic : bsList) {

dic.setDkey(dic.getDnote());

}

System.out.println(asList);

System.out.println(bsList);

System.out.println(asList.size());

System.out.println(bsList.size());

结果:

第一个对象和第二个对象完全相同,dkey都被改变了

2、可以看出来,1个List已经通过new关键字,重新生成了一个,但是List中包含的SysDic对象是相同的,你修改其中一个,另外一个也会发生变化。所以即使复制了List也无济于事,需要将List中的对象也复制一下才可以互不干扰。

相关推荐
纳兰青华1 天前
bean注入的过程中,Property of ‘java.util.ArrayList‘ type cannot be injected by ‘List‘
java·开发语言·spring·list
云泽野1 天前
【Java|集合类】list遍历的6种方式
java·python·list
oioihoii2 天前
C++11 forward_list 从基础到精通:原理、实践与性能优化
c++·性能优化·list
让我们一起加油好吗2 天前
【C++】list 简介与模拟实现(详解)
开发语言·c++·visualstudio·stl·list
Vitta_U2 天前
MFC的List Control自适应主界面大小
c++·list·mfc
Aliano21713 天前
Arrays.asList和 List<String> list = new ArrayList<>();有什么区别
数据结构·list
BillKu13 天前
Vue3 + TypeScript合并两个列表到目标列表,并且进行排序,数组合并、集合合并、列表合并、list合并
vue.js·typescript·list
77tian14 天前
Java Collections工具类:高效集合操作
java·开发语言·windows·microsoft·list
___波子 Pro Max.14 天前
python list去重
python·list
2401_8582861116 天前
CD45.【C++ Dev】STL库的list的使用
开发语言·数据结构·c++·list