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

相关推荐
第七序章40 分钟前
【C++STL】list的详细用法和底层实现
c语言·c++·自然语言处理·list
摇滚侠14 小时前
java语言中,list<String>转成字符串,逗号分割;List<Integer>转字符串,逗号分割
java·windows·list
我星期八休息15 小时前
深入理解跳表(Skip List):原理、实现与应用
开发语言·数据结构·人工智能·python·算法·list
掘根15 小时前
【CMake】List
windows·microsoft·list
恣艺1 天前
Redis列表(List):实现队列/栈的利器,底层原理与实战
数据库·redis·list
一枝小雨1 天前
【C++】list 容器操作
开发语言·c++·笔记·list·学习笔记
小六子成长记2 天前
【C++】:list容器全面解析(超详细)
c++·windows·list
重生之我是Java开发战士2 天前
【数据结构】Java集合框架:List与ArrayList
java·数据结构·list
minji...2 天前
C++ list的模拟实现
开发语言·c++·list
黄贵根3 天前
C++STL系列-04. list和forward_list
c++·list