根据一个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中的对象也复制一下才可以互不干扰。

相关推荐
江节胜-胜行全栈AI14 小时前
Java-对比两组对象找出发生变化的字段工具-支持枚举映射-支持时间-支持显示对应字段中文描述-嵌套list等场景
java·python·list
丁总学Java14 小时前
用 npm list -g --depth=0 探索全局包的秘密 ✨
arcgis·npm·list
末央&15 小时前
【C++】list底层封装和实现
c++·windows·list
丁总学Java16 小时前
为什么 npm list -g 没显示 node_modules?✨
arcgis·npm·list
念九_ysl1 天前
Java中的列表(List):操作与实现详解
java·开发语言·list
钢铁男儿1 天前
Python 序列构成的数组(list.sort方法和内置函数sorted)
windows·python·list
daiwoliyunshang1 天前
list的底层:
list
晨辰丷1 天前
【STL】list介绍(附与vector的比较)
c语言·开发语言·数据结构·c++·list
刘大猫.2 天前
遍历集合list工具
java·list·遍历list·遍历集合·集合排序·遍历对象返回匹配·遍历集合返回第一个匹配值
DevangLic3 天前
【STL 之速通pair vector list stack queue set map 】
开发语言·c++·蓝桥杯·list