记一个坑-list.addAll()后,修改新list的内容,旧list也会跟着改

server/2024/12/23 4:34:39/

问题代码:

java">public static void main(String[] args) throws Exception{Map<String,Object> map = new HashMap<>();map.put("a",1);List<Map<String,Object>> l1 = new ArrayList<>();l1.add(map);List<Map<String,Object>> l2 = new ArrayList<>();System.err.println("l1:" + new Gson().toJson(l1));System.err.println("l2:" + new Gson().toJson(l2));l2.addAll(l1);for (Map<String, Object> mapUtil : l2) {mapUtil.put("b",1);}System.err.println("l1:" + new Gson().toJson(l1));System.err.println("l2:" + new Gson().toJson(l2));}

打印:

java">l1:[{"a":1}]
l2:[]
l1:[{"a":1,"b":1}]
l2:[{"a":1,"b":1}]

可以看到我明显改的是l2,l1怎么也变了呢,原因就在 addAll()
修改代码:

java">public static void main(String[] args) throws Exception{Map<String,Object> map = new HashMap<>();map.put("a",1);List<Map<String,Object>> l1 = new ArrayList<>();l1.add(map);List<Map<String,Object>> l2 = new ArrayList<>();System.err.println("l1:" + new Gson().toJson(l1));System.err.println("l2:" + new Gson().toJson(l2));l2 =(List<Map<String,Object>>) SerializationUtils.clone((Serializable) l1);for (Map<String, Object> mapUtil : l2) {mapUtil.put("b",1);}System.err.println("l1:" + new Gson().toJson(l1));System.err.println("l2:" + new Gson().toJson(l2));}

打印:

java">l1:[{"a":1}]
l2:[]
l1:[{"a":1}]
l2:[{"a":1,"b":1}]

完美


http://www.ppmy.cn/server/105288.html

相关文章

无人机:航拍书籍推荐

写在前面 学习航拍&#xff0c;整理一些书籍分享理解不足小伙伴帮忙指正 &#x1f603;,生活加油 99%的焦虑都来自于虚度时间和没有好好做事&#xff0c;所以唯一的解决办法就是行动起来&#xff0c;认真做完事情&#xff0c;战胜焦虑&#xff0c;战胜那些心里空荡荡的时刻&…

Java基础——正则表达式

正则表达式 正则表达式&#xff1a;使用字符串来定义匹配规则&#xff08;regex&#xff09; 正则表达式的匹配练习&#xff1a; 注意&#xff1a;正则不用手动去写&#xff0c;也不用去记&#xff0c;了解一下就行了。 去网站生成正则表达式就行 日期处理 Date //创建当…

SpringBoot集成kafka接收消息

SpringBoot集成kafka接收消息 1、SpringBoot集成kafka接收消息2、Payload注解接收消息体内容3、Header注解接收消息头内容4、接收消息所有内容 1、SpringBoot集成kafka接收消息 生产者 package com.power.producer;import org.springframework.kafka.core.KafkaTemplate; imp…

计算机毕业设计选题推荐-岗位招聘数据可视化分析-Python爬虫

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

CentOS7发送邮件如何配置SMTP服务器发信?

CentOS7发送邮件安全设置&#xff1f;CentOS7发信性能优化方法&#xff1f; 对于使用CentOS7操作系统的用户而言&#xff0c;配置SMTP服务器以发送邮件是一个关键步骤。AokSend将详细介绍如何在CentOS7中配置SMTP服务器发信的方法和注意事项。 CentOS7发送邮件&#xff1a;准…

18. 分割dataframe:让数据分析更高效

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 如何分割dataframe&#xff1f; 在pandas中&#xff0c;可以使用groupby函数来分割dataframe。groupby函数可以将dataframe中的行按照指定的列进行分组&#xff0c;然后可以对每个组进行各种操作。 下面是一个简单…

设计模式六大原则(一)--单一职责原则

摘要 单一职责原则是设计模式六大原则之一&#xff0c;强调一个类应该仅有一个引起它变化的原因&#xff0c;即每个类应仅负责一项职责。本文通过详细探讨单一职责原则的定义、实现方式、优缺点及其适用场景&#xff0c;揭示了其在软件设计中的核心地位。通过类的拆分、接口设…

flutter 键盘弹出 都会重新Build

原因是调用MediaQuery.of(context)后&#xff0c;点击TextField组件时会导致调用build方法。 解决方法&#xff1a;在Scaffold组件的body嵌套Builder组件&#xff0c;然后设置一个BuildContext变量&#xff0c;将Builder组件中的context传递给BuildContext变量&#xff0c;然后…