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

相关推荐
我头发多我先学4 小时前
C++ STL list 原理到模拟实现
开发语言·c++·list
‎ദ്ദിᵔ.˛.ᵔ₎1 天前
LIST 的相关知识
数据结构·list
不爱吃炸鸡柳1 天前
C++ STL list 超详细解析:从接口使用到模拟实现
开发语言·c++·list
Access开发易登软件1 天前
在 Access 中实现 Web 风格 To Do List
前端·数据结构·microsoft·list·vba·access·access开发
rh106LrSb3 天前
C 里面如何使用链表 list
c语言·链表·list
AbandonForce3 天前
C++ STL list容器模拟实现
开发语言·c++·list
OOJO4 天前
c++---list介绍
c语言·开发语言·数据结构·c++·算法·list
William_wL_4 天前
【C++】list的实现
c++·list
疯狂打码的少年5 天前
【Day02 Java转Python】Python的ArrayList: list与tuple的“双面人生
java·python·list
qq_283720055 天前
C++ STL 容器选型实战:vector/list/map/unordered_map 性能对比与选型指南
c++·list·map·性能对比