list复制出新的list后修改元素,也更改了旧的list?
例子
addAll()
@Testpublic void CopyListTest(){Student student = Student.builder().id(1).name("张三").age(23).classId(1).build();Student student2 = Student.builder().id(2).name("李四").age(22).classId(1).build();List<Student> students = new ArrayList<>();students.add(student);students.add(student2);System.out.println("旧的list");for (Student stu : students){System.out.println(stu);}List<Student> list2 = new ArrayList<>();list2.addAll(students);list2.stream().forEach(t->t.setClassId(2));System.out.println("新的list");for (Student stu : list2){System.out.println("班级id"+stu.getClassId());}System.out.println("旧的list");for (Student stu : students){System.out.println("班级id"+stu.getClassId());}}

旧的list的值被改变
直接用 newList = oldList 是引用传递,复制的是地址
改变oldList里的内容同样也会影响到newListnewList.addAll(oldList)是值传递
参考:http://t.csdnimg.cn/EGcYC
但 用allAll() 原来的值也被改变了
解决
使用深度复制
public static <T> List<T> deepCopy(List<T> sourceList) throws IOException, ClassNotFoundException{ByteArrayOutputStream bo= new ByteArrayOutputStream();ObjectOutputStream oos= new ObjectOutputStream(bo);oos.writeObject(sourceList);ByteArrayInputStream bi= new ByteArrayInputStream(bo.toByteArray());ObjectInputStream ois=new ObjectInputStream(bi);@SuppressWarnings("unchecked")List<T> dest = (List<T>)ois.readObject();return dest;}
所复制的元素如果是对象,需要实现序列化。
参考:http://t.csdnimg.cn/EGcYC
如果所复制的元素是字符
List<String> newList=new ArrayList<String>(oldList);
相关文章:
list复制出新的list后修改元素,也更改了旧的list?
例子 addAll() Testpublic void CopyListTest(){Student student Student.builder().id(1).name("张三").age(23).classId(1).build();Student student2 Student.builder().id(2).name("李四").age(22).classId(1).build();List<Student> student…...
Qt绘制各种图形
重载绘图事件: protected:void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;void Widget::paintEvent(QPaintEvent *event) { 进行绘图操作 } 绘图前操作: //基本绘图QPainter painter(this);//创建QPainter对象painter.setRenderHint(QPa…...
NIO 笔记(二)Netty框架专题
【笔记来自:it白马】 Netty框架 前面我们学习了Java为我们提供的NIO框架,提供使用NIO提供的三大组件,我们就可以编写更加高性能的客户端/服务端网络程序了,甚至还可以自行规定一种通信协议进行通信。 NIO框架存在的问题 但是之…...
HTTP——
HTTP 请求报文的构成 如下图: 第一行:HTTP请求的方法,具体是POST方法还是GET方法,或是其它方法;URI就是你的HTTP请求的路径;后面是HTTP协议的版本; 第二行往下连续多行:这些是请求头部分,也就是请求的首部设置的一些信息,相当于对HTTP请求的一些设置; 空格行:在…...
第13章 Java IO流处理(二) 字节流与字符流
目录 内容说明 章节内容 1、I/O与流 2、输入流和输出流 3、字节流与字符流...
【论文阅读】(CTGAN)Modeling Tabular data using Conditional GAN
论文地址:[1907.00503] Modeling Tabular data using Conditional GAN (arxiv.org) 摘要 对表格数据中行的概率分布进行建模并生成真实的合成数据是一项非常重要的任务,有着许多挑战。本文设计了CTGAN,使用条件生成器解决挑战。为了帮助进行公…...
如何进行iOS技术博客的备案?
如何进行iOS技术博客的备案? 标题:iOS技术博客备案流程及要求解析 摘要: 在本篇问答中,我们将为iOS技术博主介绍如何进行备案。如果你的iOS应用只包含简单的页面,并通过蓝牙进行数据采集和传输,那么你…...
RTSP/Onvif安防平台EasyNVR批量禁用/启用通道接口的详细操作步骤
TSINGSEE青犀视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入,并能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。在智慧安防等视频监控场景中,EasyNVR可提供视频实时监控直播、云端…...
2个器件,做1个恒流源
在项目中经常要用到恒流源,查找资料可以使用电压源芯片LM317构造一个电流源芯片。本文将电压源加上一个电阻改为电流源,这种设计思路可以扩展到其他类型的电源芯片上,如开关电源及其他类型的线性电源,关键点在于基准电压VREF的使用…...
SQL INSERT INTO SELECT 语句
SQL INSERT INTO SELECT 语句 使用SQL,您可以将信息从一个表中复制到另一个表中。 INSERT INTO SELECT 语句从表中复制数据,并将数据插入现有的表中。目标表中的任何现有行都不会受到影响。 SQL INSERT INTO SELECT 语法 我们可以将所有列从一个表中复制…...
Elasticsearch 在 Java 开发中的应用
Elasticsearch 在 Java 开发中的应用 Elasticsearch 是一个开源的分布式搜索引擎,广泛应用于全文搜索、日志分析等场景。本文将介绍 Elasticsearch 在 Java 开发中的基本使用和一些实际场景中的应用。 1. 引入 Elasticsearch 依赖 首先,需要在 Maven 或…...
linux 的uart驱动框架分析
文章目录 一、底层串行硬件驱动程序二、Console支持三、锁支持四、核心数据结构1、struct uart_driver2、struct uart_port3、struct uart_ops四、常用API总结五、uart驱动示例剖析1、原厂设计的uart驱动2、8250标准uart驱动六、总结🔺【linux内核系列文章】 👉对一些文章内…...
头歌答案HTML——基础
目录 HTML——基础 第1关:初识HTML:简单的Hello World网页制作 任务描述 第2关:HTML结构:自我简介网页 任务描述 HTML——基本标签 第1关:创建第一个 HTML 标签 任务描述 第2关:创建 任务描述 …...
【数据结构——队列的实现(单链表)】
数据结构——队列的实现(单链表) 一.队列1.1队列的概念及结构 二.队列的实现2.1 头文件的实现——(Queue.h)2.2 源文件的实现—— (Queue.c)2.3 源文件的实现—— (test.c) 三.队列的…...
《LeetCode力扣练习》代码随想录——链表(移除链表元素---Java)
《LeetCode力扣练习》代码随想录——链表(移除链表元素—Java) 刷题思路来源于 代码随想录 203. 移除链表元素 虚拟头结点 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* …...
linux 安装 mini conda,linux下安装 Miniconda
下载地址 https://docs.conda.io/projects/miniconda/en/latest/index.html 安装conda mkdir -p ~/miniconda3 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh bash ~/miniconda3/miniconda.sh -b -u -p ~/mini…...
机器人 Null impedance(零阻抗)梳理
"Null impedance"(零阻抗)是指机器人系统在特定情境下被设计成对外部力或运动表现出极小的阻抗。这意味着机器人系统在受到外部作用力时,几乎不会提供阻抗或阻力,使其能够灵活地适应外部环境的变化。零阻抗的设计旨在让…...
MDM9205开发环境搭建与编译调试
前言 如题,这篇文章说的是高通mdm9205这颗物联网芯片,从官方资源的获取(包括文档、代码、软件工具等等)到如何编译出可运行固件的方法。 对经历了不止一次这颗芯片开发的我来说,在过程中遇到问题,除了寄希望于可能在工作日第二天凌晨得到的case回复,有一篇最新的有指导方…...
Linux操作系统使用及C高级编程-D3Linux shell命令(权限、输入输出)
Shell 是一种应用程序,用以完成用户与内核之间的交互 一个功能强大的编程语言(C语言) 一个解释执行的脚本语言,不需要编译,写完直接执行 目前Linux 乌班图的Shell默认是bash 查看当前提供的Shell:cat /…...
无线充,大功率小家电,智能家居,无人机快速充电等产品供电 LDR6328S芯片TYUPE-C PD诱骗电压 USB-C解决PD电源取电问题
LDR6328S 是乐得瑞科技有限公司开发的一款兼容 USB PD、QC 和 AFC 协议的 Sink 控制器。 LDR6328S 从支持 USB PD、QC 和 AFC 协议的适配器取电,然后供电给设备。比如可以配置适配器输 出需要的功率,给无线充电器设备供电。LDR6328S 也兼容传统 USB 电源…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...
消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...
Linux安全加固:从攻防视角构建系统免疫
Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...
医疗AI模型可解释性编程研究:基于SHAP、LIME与Anchor
1 医疗树模型与可解释人工智能基础 医疗领域的人工智能应用正迅速从理论研究转向临床实践,在这一过程中,模型可解释性已成为确保AI系统被医疗专业人员接受和信任的关键因素。基于树模型的集成算法(如RandomForest、XGBoost、LightGBM)因其卓越的预测性能和相对良好的解释性…...
32位寻址与64位寻址
32位寻址与64位寻址 32位寻址是什么? 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元(地址),其核心含义与能力如下: 1. 核心定义 地址位宽:CPU或内存控制器用32位…...
