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

相关推荐
longlongzihan2 天前
C++ 常用数据结构速查:vector、stack、queue、list、树、图、哈希表等声明与核心操作
数据结构·c++·list
xiangyun613 天前
C++ list 模拟实现(二):const迭代器与反向迭代器,模板的黑魔法
开发语言·数据库·c++·算法·stl·list
xiangyun614 天前
C++ list 模拟实现(一):手撕双向链表,从节点到迭代器
数据库·c++·算法·链表·stl·list
无忧.芙桃6 天前
C++语言原理与实践(十二):list类的底层实现
c++·windows·list
大鹏说大话7 天前
C++ STL 容器怎么选?vector、list、map、unordered_map 对比
开发语言·c++·list
by209999 天前
list:迭代器与资源管理实现的综合叙述(下)
数据结构·c++·笔记·list
by2099911 天前
list 的使用:把节点、位置和操作联系起来的综合叙述(上)
数据结构·c++·笔记·list
ShineWinsu14 天前
对于Redis:List类型的解析
数据库·c++·redis·链表·缓存·面试·list
weixin1997010801616 天前
《1688物流API接口边界:logistics.trace.get 与 freight.template.list 的隐藏约束》(附Python源码)
windows·python·list
恋喵大鲤鱼16 天前
go list command
golang·list