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

相关推荐
CHANG_THE_WORLD15 小时前
Python列表(List)介绍
windows·python·list
帝吃藕和2 天前
Java中数组、ArrayList和List的初始化与转换
java·list
李日灐2 天前
C++STL: list(双链表) 简单介绍,了解迭代器类型,list sort 的弊端
开发语言·c++·list
咖丨喱3 天前
【对端发送的invitation req中channel list和operating channel的operating class不对应】
数据结构·list·asp.net
骇客野人3 天前
JAVA获取一个LIST中的最大值
java·linux·list
曹牧3 天前
Java:list<map<string,sting>>与C#互操作
java·c#·list
獭.獭.5 天前
C++ -- STL【list的模拟实现】
c++·stl·list
Sunny_Future5 天前
list()函数完全指南:用法、场景与实战
list
獭.獭.6 天前
C++ -- STL【list的使用】
c++·stl·list
曹牧6 天前
Java中使用List传入Oracle的IN查询
java·oracle·list