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

相关推荐
AitTech2 分钟前
C#编程:List.ForEach与foreach循环的深度对比
开发语言·c#·list
OliverH-yishuihan4 小时前
C++ list 容器用法
c++·windows·list
HappyAcmen19 小时前
Java中List集合的面试试题及答案解析
java·面试·list
吴天德少侠21 小时前
c++中的链表list
c++·链表·list
bing_1581 天前
Java 中求两个 List集合的交集元素
java·list
卷卷的小趴菜学编程1 天前
c++之List容器的模拟实现
服务器·c语言·开发语言·数据结构·c++·算法·list
秋已杰爱1 天前
list底层实现细节
list
被二进制支配的打工人2 天前
【STL】list 双向循环链表的使用介绍
数据结构·c++·链表·stl·list
wangchen_03 天前
C++ List 容器:实现原理深度解析
数据结构·c++·链表·list
KpLn_HJL3 天前
leetcode - 82. Remove Duplicates from Sorted List II
算法·leetcode·list