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

相关推荐
Madison-No72 天前
【C++】关于list的使用&&底层实现
数据结构·c++·stl·list·模拟实现
微露清风3 天前
系统性学习C++-第九讲-list类
c++·学习·list
吴名氏.3 天前
细数Java中List的10个坑
java·开发语言·数据结构·list
列逍5 天前
list的模拟实现
数据结构·c++·list
FmZero7 天前
基于比特位图映射对List<Object>多维度排序
数据结构·list
霸道流氓气质7 天前
Java中使用Collator实现对象List按照中文姓名属性进行A-Z的排序实现
java·开发语言·list
一个心烑8 天前
将一个List分页返回的操作方式
数据结构·list
小杰帅气8 天前
STL_List简单使用
开发语言·c++·list
TheWindofFate8 天前
C# List集合
c#·list
错把套路当深情8 天前
Kotlin List扩展函数使用指南
开发语言·kotlin·list