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

相关推荐
Jul1en_11 小时前
【Redis】List列表命令、编码方式及应用场景
数据库·redis·list
小毛驴8501 天前
在Java高并发环境下,实现线程安全的List和Map有以下几种常见方案
java·安全·list
王璐WL2 天前
【C++】string,vector和list对比
c++·list
计算机安禾2 天前
【数据结构与算法】第45篇:跳跃表(Skip List)
c语言·数据结构·算法·list·排序算法·图论·visual studio
Severus_black5 天前
C实现双向链表和相关函数!巨详细!
c语言·数据结构·链表·list
Magic--5 天前
C++ STL中vector与list的核心区别
c++·windows·list
li1670902706 天前
第十章:list
c语言·开发语言·数据结构·c++·算法·list·visual studio
游乐码6 天前
C#List
开发语言·c#·list
代码改善世界6 天前
【C++初阶】双向循环链表:List底层结构的完整实现剖析
c++·链表·list
我头发多我先学7 天前
C++ STL list 原理到模拟实现
开发语言·c++·list