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

相关推荐
要做朋鱼燕3 天前
【C++】 list 容器模拟实现解析
开发语言·c++·笔记·职场和发展·list
FuckPatience3 天前
C# 修改基类List中某一元素的子类类型
c#·list
怒码ing4 天前
List<?>和List<Object>区别
windows·python·list
珹洺5 天前
C++从入门到实战(二十一)List迭代器实现
开发语言·c++·list
你我约定有三6 天前
数据结构--跳表(Skip List)
数据结构·list
奔跑吧邓邓子6 天前
【Java实战⑨】Java集合框架实战:List集合深度剖析
java·实战·list·集合
蓝风破云8 天前
模拟实现STL中的list容器
c语言·数据结构·c++·链表·迭代器·list·iterator
可可睡着辽9 天前
C++链表双杰:list与forward_list
c++·链表·list
李白同学9 天前
C++:list容器--模拟实现(下篇)
开发语言·数据结构·c++·windows·算法·list
Li_yizYa9 天前
List | 常见的List实现类(ArrayList、LinkedList、Vector)以及ArrayList源码解读
数据结构·list