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

相关推荐
Remember_9936 天前
SpringCloud:Nacos注册中心
java·开发语言·后端·算法·spring·spring cloud·list
黎雁·泠崖6 天前
Java 集合入门:Collection & List 接口超详细讲解
java·list
崎岖Qiu7 天前
使用 Redis 的 List 实现缓存分页信息(模拟 limit offset 的 SQL 语句)
redis·mysql·缓存·list
睡一觉就好了。8 天前
list容器简介及其接口函数
数据结构·list
A懿轩A8 天前
【Java 基础编程】Java 集合框架详解:List/Set/Map 选型 + ArrayList/HashMap 原理与使用
java·windows·list
浅念-8 天前
C++ STL list 容器
开发语言·数据结构·c++·经验分享·笔记·算法·list
星火开发设计13 天前
序列式容器:list 双向链表的特性与用法
开发语言·前端·数据结构·数据库·c++·链表·list
ShineWinsu14 天前
对于模拟实现C++list类的详细解析—上
开发语言·数据结构·c++·算法·面试·stl·list
ShineWinsu14 天前
对于C++中list的详细介绍
开发语言·数据结构·c++·算法·面试·stl·list
墨雪不会编程15 天前
C++之【list详解篇一】如何玩好链表
c++·链表·list