关于List添加对象重复问题/list内参数被修改引用地址

unity 腾讯地图sdk移动和缩放代码 unity 腾讯地图sdk 实现移动端 缩放 和 移动 阅读详情

这是今天遇到的问题

今天利用list添加同一个引用地址的实体类具体代码如下:

问题代码

 List<WxMpTemplateMessage> list = new ArrayList<>();
        //获取运维角色对应的用户的openId
        List<User> userList = userService.list("0");
        for (WxMpTemplateMessage mpTemplateMessage : lstWxMpTemplate) {
            for (User user : userList) {
                auth auth = userAuthService.getModelByUserId(user.getId());
                //固定的模板ID通知
                mpTemplateMessage.setTemplateId(#模板ID);
                //修改对应的openId
                mpTemplateMessage.setToUser(auth.getOpenId());
                //打印toUser
                log.info( mpTemplateMessage.getToUser());
                list.add(mpTemplateMessage);
            }
        }
        //输出list添加的参数
         for (WxMpTemplateMessage wxTemplate : list) {
            log.info(wxTemplate.getToUser());
        }

输出结果
message:111oYxdD6AW2CrNRua
message:111oYxdD6K3MsvBt2c
message:111oYxdD6H6MNxDb
//最后输出list的值为list添加的最后一个值
message:333oYxdD6H6MNxDb
message:333oYxdD6H6MNxDb
message:333oYxdD6H6MNxDb

问题解决

 List<WxMpTemplateMessage> list = new ArrayList<>();
        //获取运维角色对应的用户的openId
        List<User> userList = userService.list("0");
        for (WxMpTemplateMessage mpTemplateMessage : lstWxMpTemplate) {
            for (User user : userList) {
                auth auth = userAuthService.getModelByUserId(user.getId());
                //固定的模板ID通知
                mpTemplateMessage.setTemplateId(#模板ID);
                //修改对应的openId
                mpTemplateMessage.setToUser(auth.getOpenId());
                 WxMpTemplateMessage news = BeanHelper.copyProperties(mpTemplateMessage, WxMpTemplateMessage.class);
                //打印toUser
                log.info( news.getToUser());
                list.add(news );
            }
        }
        //输出list添加的参数
         for (WxMpTemplateMessage wxTemplate : list) {
            log.info(wxTemplate.getToUser());
        }

输出结果
message:111oYxdD6AW2CrNRua
message:111oYxdD6K3MsvBt2c
message:111oYxdD6H6MNxDb
//输出正常
message:333oYxdD6AW2CrNRua
message:333oYxdD6K3MsvBt2c
message:33oYxdD6H6MNxDb

总结

这里出现的问题个人理解为当list进行add操作时添加的对象引用地址不能为同一个,否则会改变list里已经添加对象的值,最终导致List类的add()方法每次加入的都是对存放在堆中对象的引用地址。所以要谨记在日常编写过程中需要避免这种情况。

Shopee App加密算法逆向实战:从libshpssdk.so到x-sap-ri的生成机制 本文详细解析了Shopee App核心加密参数x-sap-ri的生成机制。通过逆向分析libshpssdk.so动态库,揭示了其采用9套算法动态切换的复杂签名逻辑,并分享了从抓包定位、Frida动态调试到Unidbg模拟执行的全过程实战经验,为移动应用安全研究提供了完整的技术路径。 阅读详情

相关推荐

展会客流统计的客流统计系统,WiFi客流每时每客

一般展会的举行时间都在3-7天之间,展会作为市场部门一项重要工作,一直以来没有一项有效的工具能够提供数据支持。 展会最重要的是通过活动和产品来吸引参展者的参观,如何统计展会期间的客流量呢?如何通过将数据转化成为活动数据的支撑呢? 目前成熟的解决方案有,视频客流统计、WiFi客流统计、红外线客流统计等方式。由于展会通常的时间都比较短,视频、红外线客流统计采购及安装价格都比较高,需

isentech的博客 3994

list地址引用相同

两个list地址引用相同,一个list改变数据另一个也会随之改变,解决方法 例如: private List<ShopBrandTypeBean> listType = new ArrayList<>();//最终确定的数据 private List<ShopBrandTypeBean> listTypeShow = new ArrayList<&...

weixin_44450490的博客 736

光模块组成

时钟恢复电路(Clock Data Recovery,简称CDR)是光模块中的关键组成部分,CDR的作用主要是从接收到的信号中提取出数据序列,并且恢复出与数据序列相对应的时钟时序信号,从而还原接收到的具体信息。因为光信号传输至一定距离的时候,通常是长距离传输,其波形会出现一定程度的失真,接收端接收到的信号是一个个长短不一的脉冲信号,这个时候在接收端,我们就无法得到我们需要的数据。所以,这个时候就需要有信号的再生,信号的再生功能为再放大、再整形和再定时,其中的再定时指的就是CDR时钟数据恢复。

han_better的博客 5720

易错:List中的add方法添加对象时出现重复的问题

List.add()对象的值重复问题

weixin_43732535的博客 2001

CATIA_DELMIA_V5R2019安装包下载及安装教程破解

CATIA_V5R2019/DELMIA_V5R2019安装包下载及安装教程破解

一只机械工装熊的博客 8331

适航规章、标准,书籍资料下载汇总(增加DO-160G中英文版)

很多读者之前问我有没有DO-160G的资源,现在终于找到啦!如果大家有其他想要的资源,可以在留言区告诉我,有空我会帮大家找找看~文末有下载链接:更新日志:2024-9-28:初版。2024-10-21:增加DO-330英文版PDF下载。2024-10-30:增加DO-160G中文版(非机翻)和英文版PDF下载。以下是一些收集到的适航相关的资料,分享给大家。(如果没有你想要的资料,请留言,等找到会及时更新!

qq_41854911的博客 2755

List中存储同一个对象(内容不同)

List中存储同一个对象,前面的会被后存入的对象覆盖,解决方法:每次存入新的对象 转载于:https://www.cnblogs.com/wanhua-wu/p/6210124.html

weixin_30399155的博客 561

动力学约束下的运动规划算法——Kinodynamic RRT*算法

动力学约束下的运动规划算法——Kinodynamic RRT*算法

慕羽★的博客 6747

实体bean放进list集合值重复的问题

实体bean放进list集合值重复

一个真实、有温度的无名小卒 3182

【YOLOv8改进-注意力机制】LSKNet(Large Selective Kernel Network ):空间选择注意力

【YOLOv8改进-注意力机制】LSKNet(Large Selective Kernel Network ):空间选择注意力 (论文笔记+引入代码)。LSKNet能够动态调整其大的空间接收场,以更好地模拟遥感场景中各种对象的范围上下文。据我们所知,这是首次在遥感目标检测领域探索大型和选择性核机制。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 2864

[特殊字符] PetaLinux Qt 程序(WindRadar)无法自动启动问题解决文档

摘要:本文档解决了PetaLinux 2020.1系统中Qt程序(WindRadar)无法开机自动显示界面的问题。通过分析发现,自动启动时缺少DISPLAY=:0.0环境变量导致Qt找不到显示设备。最终在autostart.sh脚本中添加该变量,并完善了字体加载、驱动加载、显示设备检测等流程,确保程序正常自启显示界面。完整脚本包含路径检测、环境配置和错误处理,经验证各项功能均正常运行。

梁俊星的博客 326

Java根据list中对象的属性找出list重复数据

Java根据list中对象的属性找出list重复数据或去除list重复数据 按照思路进行对应的修改即可 第一种方法 public static void main(String[] args) { List<Student> testList = new ArrayList<Student>(); testList.add(new Student("张一")); testList.add(new Student("张二")); testList.add(new Student

qq_41941256的博客 1万+

在Qt中集成VTK和PCL:实现数据可视化的完整指南

在现代软件开发中,数据可视化至关重要。将VTK(Visualization Toolkit)和PCL(Point Cloud Library)集成到Qt环境里,能为开发者提供强大的可视化解决方案。本文将深入讲解如何在Qt中读取PCL文件,展示VTK模型和PCL数据,适合想要在Qt项目中实现数据可视化的开发者。

轩宇的博客 916

【C++】C++11(右值引用/移动语义/lambda/可变模板参数/包装器)

C++11新特性摘要:C++11是继C++98/03后的重要更新,带来约140个新特性。主要改进包括:1) 统一的列表初始化语法,支持所有内置和自定义类型;2) 右值引用和移动语义,解决深拷贝效率问题;3) 自动类型推导(auto)和类型获取(decltype);4) lambda表达式简化匿名函数编写;5) 可变参数模板支持更灵活的泛型编程;6) 完美转发(std::forward)保持参数类型属性;7) 新增移动构造和移动赋值默认成员函数;8) 包装器(std::function)统一函数对象调用方式。

wefg1的博客 817

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

一文学完Python基础

个人笔记

qq_59247073的博客 214

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

并行分布式框架:Celery、rq、funboost

Celery是一个异步任务的调度工具,也可以叫做 "分布式任务队列(Distributed Task Queue)"。

freeking101的博客 5万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

List中存储实体类并根据实体类的指定属性去重

List中存储实体类并根据实体类的指定属性去重

2396

java修改引用对象地址值原值不变问题

今天写代码遇到了一个很离谱的问题,A方法传递List进B在B方法里面修改了List的引用,但是A方法里面的List没做改变见下代码 public class Test{ public void A(){ List<String> list = Lists.newArrayList("123","234"); System.out.println(list.size()); } public void B(List<String> list){ list = n.

weixin_47733858的博客 2358

java使用List<>存储数据,数据重复

我遇到的问题: 使用list存放一个对象数组,存进去的时候每条数据都是对应的,也就是正确的,结果最后遍历list的时候,发现每条数据都是同样一条,也就是最后传进去的那一条。 原始代码及错误展示: 错误原因: new ArrayList在for外层,而new 一个对象地址,List每次只访问这个引用地址,所以我们的代码只是对引用地址里的对象进行操作,所以数据会一直被覆盖。 修改代码 总结,java要好好打基础。Over 本文参考了http://t.csdn.cn/QR4ESht.

weixin_46019681的博客 1384

java list add 对象_快速解决List集合add元素,添加多个对象出现重复的问题

首先我们在new 一个对象的时候,对象的id是唯一确定的;将对象add入list中时,放入list中的其实是对象的引用 ;而每次循环只是简单的set 对象的属性,set新的属性值,而add进list中的对象还是同一个对象id,也就是同一个对象;所以每次add之后,list发现对象引用和之前元素一样,就覆盖掉了之前add的对象。所以循环之后list中的对象是重复的对象。想要避免这个问题只要每次add...

weixin_32999557的博客 3065

List集合对象引用的问题

这是我弄下拉框时遇到的一个关于List集合对象引用的问题。 我在for循环外部声明了一个对象,然后在for循环里面给对象属性赋值,最后在将他添加到list集合里去,最后页面返回的数据全部都是最后一条数据,就是重复了。 错误代码: @ResponseBody @RequestMapping(value="/select",produces=“application/json;charset=UTF-8”) public Object select(){ List<BsIncometype>

weixin_42047392的博客 2779

List添加对象添加的是对象的引用

对象引用

DUDUfine的专栏 3608

list集合添加的是引用型对象

先猜这会输出什么 null 还是 1 user对象里只有id 和 name 这个呢 答案都是 为什么? java是从上往下执行,按道理应该底下为空,实际真的是这样吗? list集合里面存的是对象的引用,而不是并不是对象本身 对象的引用浅显来讲就是 user对象在班上第3组第1个,list集合里面存的是这个地址,而不是user对象本身,之前坐的人是小明,后面换成小红了,地址没有改变,对象改变了。 list改变了吗?也没有,他只是告诉你user坐在3组1号,坐的是谁,他不关心, ...

Escaper的博客 664

list集合循环添加对象详解【对象添加重复&&解决办法&&具体分析】

问题:list集合循环添加对象,添加完后遍历list集合发现,对象都一样,都是最后一个对象的值。 问题原因:在循环外实例化对象。 解决方法有两种: 1.循环外定义变量,循环内实例化对象赋值 2.循环内定义变量并实例化对象 建议用第一种解决方法,理由: 第一种方法节省大量栈空间内存 代码如下: public class ListAddObject { //准备一个Teacher类 只有一个id属性 ...

qq_42651201的博客 1万+

ADO.NET— 使用List集合封装多个同类型对象

ADO.NET— 使用List集合封装多个同类型对象 //方法的返回值是一个实体类对象 public StudentExt GetStudentByStuId(string stuId) { //组合SQL语句 string sql = "select StudentName,StudentId,Gender,Birthday,Age,Cl...

weixin_43550660的博客 582

【Java开发笔记】List集合循环添加对象(解决方法)

【代码】【Java开发笔记】List集合循环添加对象(解决方法)

记录学习的历程 4163
上一篇: 使用Aspose Java在word中绘制插入表格
下一篇: JAVA微信公众号完整版教程扫一扫登录/自动回复/客服消息
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值