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

相关推荐
郭二哈6 小时前
C++——list
开发语言·c++·list
cdut_suye1 天前
STL之list篇(下)(从底层分析实现list容器,逐步剥开list的外表)
开发语言·数据结构·c++·学习·算法·stl·list
编程版小新2 天前
C++初阶:STL详解(七)——list的模拟实现
开发语言·c++·学习·迭代器·list·list的模拟实现
T-ang.2 天前
第九章---for循环及在STL的应用(vector\map\set\list\for_each)、嵌套while、while 统一输出、do-while
开发语言·数据结构·c++·学习·算法·list·改行学it
月色不够温柔ii2 天前
C++容器之list基本使用
开发语言·数据结构·c++·链表·list
gb42152873 天前
java中有两个list列表,尽量少的去循环
java·开发语言·list
renshen43223 天前
java list两两合并的10种方式
java·数据结构·list
请不要叫我菜鸡3 天前
Go基础学习06-Golang标准库container/list(双向链表)深入讲解;延迟初始化技术;Element;List;Ring
后端·学习·链表·golang·list·延迟初始化
六点半8884 天前
【C++】“list”的介绍和常用接口的模拟实现
开发语言·数据结构·c++·算法·青少年编程·list
MessiGo5 天前
C++ STL(3)list
开发语言·c++·list