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

相关推荐
磊 子14 小时前
STL之deque和list以及两者与vector的对比
开发语言·c++·list
影寂ldy18 小时前
C#List泛型集合
windows·c#·list
c2385621 小时前
list(下)
数据结构·windows·list
z落落21 小时前
C#ArrayList 和 List<T>核心对比和数组对比
开发语言·c#·list
likerhood2 天前
Java 集合框架入门:List、Set、Queue 与 Map
java·开发语言·list
身如柳絮随风扬2 天前
List 与 Set 的区别及体系全览
java·list
星轨初途2 天前
【C++ 进阶】list 核心机制解析及 vector 巅峰对决
开发语言·数据结构·c++·经验分享·笔记·list
小肝一下2 天前
STL——list
开发语言·c++·stl·list·伊雷娜
不负岁月无痕3 天前
STL-- C++ list类 模拟实现
开发语言·c++·list
海市公约3 天前
Redis五大基础数据类型命令详解与经典应用场景
redis·list·set·hash·string·zset·缓存架构