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

相关推荐
qq_4335545419 小时前
C++ list代码练习、set基础概念、set对象创建、set大小操作
开发语言·c++·list
IGP921 小时前
20250606-C#知识:List排序
c#·list
字节高级特工2 天前
【Linux篇】0基础之学习操作系统进程
linux·运维·服务器·数据结构·windows·学习·list
三两肉2 天前
Java 中 ArrayList、Vector、LinkedList 的核心区别与应用场景
java·开发语言·list·集合
豆芽脚脚3 天前
spel 多层list嵌套表达式踩坑记
windows·list·spel
難釋懷3 天前
Vue-Todo-list 案例
前端·vue.js·list
找不到、了3 天前
关于list集合排序的常见方法
数据结构·list
倔强的石头1066 天前
【C++指南】C++ list容器完全解读(二):list模拟实现,底层架构揭秘
c++·架构·list
枣伊吕波7 天前
第十二节:第三部分:集合框架:List系列集合:特点、方法、遍历方式、ArrayList集合的底层原理
java·jvm·list
qq_433554547 天前
C++ list数据删除、list数据访问、list反转链表、list数据排序
开发语言·c++·list