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

相关推荐
苏宸啊18 小时前
list底层实现
c++·list
波波00721 小时前
每日一题:在 .NET 中遍历集合(如 List<T>、数组、字典)的过程中进行增删改查会不会有影响?可能引发哪些问题?实际开发中应如何避免?
前端·list
以太浮标1 天前
华为eNSP模拟器综合实验之- 前缀列表(IP Prefix-list --匹配和控制路由信息的强大工具)
tcp/ip·华为·智能路由器·list
jiunian_cn2 天前
【Redis】list数据类型相关指令
数据库·redis·list
田野追逐星光3 天前
STL中容器list -- 讲解超详细
开发语言·c++·list
欧阳x天3 天前
STL讲解(七)——list容器的模拟实现
c++·windows·list
f狐0狸x4 天前
【C++修炼之路】C++ list容器基本用法详解
开发语言·c++·list
松☆4 天前
Dart 中的常用数据类型详解(含 String、数字类型、List、Map 与 dynamic) ------(2)
数据结构·list
凤年徐4 天前
C++ STL list 容器详解:使用与模拟实现
开发语言·c++·后端·list
郝学胜-神的一滴5 天前
Python List操作:+、+=、extend的深度解析
开发语言·数据结构·python·程序人生·架构·list