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 电源…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
