map在list循环里面赋值问题_cherishfh的博客-程序员宝宝_map循环赋值

技术标签: java  

查询回一个List<Map<String,Object>>集合,for循环里面遍历这个集合给新的list复制判断到特定的条件给这个list添加map
结果,List集合中的所有当前map都被处理了,各种new对象,都未解决;

问题原因是:指向问题:修改对象指向的是一个对象地址

解决办法:循环list时,将对象每次都克隆一次,putAll();

List<Map<String, Object>> allCountList = new ArrayList<Map<String, Object>>();
Map<String, Object> objectMap = new HashMap<String, Object>();
objectMap.put(“weizhi”, “”);
objectMap.put(“dw”, “艾欧尼亚”);
objectMap.put(“renshu”, “”);
allCountList.add(objectMap);
// Map<String, Object> objectMap1 = new HashMap<String, Object>();
// objectMap1.put(“dydj”, “”);
// objectMap1.put(“dw”, “昌吉”);
// objectMap1.put(“bdzsl”, “”);
// allCountList.add(objectMap1);
List<Map<String, Object>> newAllCountList = new ArrayList<Map<String, Object>>();
// for (Map<String, Object> objectMap2 : allCountList
// ) {
Map<String, Object> objectMap1 = allCountList.get(0);
if (objectMap1.get(“weizhi”).toString().equals("")) {
Map<String, Object> objectMap2 = objectMap1;
Map<String, Object> objectMap3 = objectMap1;
objectMap1.put(“weizhi”, “sup”);
objectMap1.put(“renshu”, 15);
newAllCountList.add(objectMap1);
System.out.println(“1-------” + newAllCountList);
// Map<String, Object> objectMap1 = objectMap2;
objectMap2.put(“weizhi”, “ad”);
objectMap2.put(“renshu”, 53);
newAllCountList.add(objectMap2);
System.out.println(“2-------” + newAllCountList);
objectMap3.put(“weizhi”, “mid”);
objectMap3.put(“renshu”, 20);
newAllCountList.add(objectMap2);
System.out.println(“3-------” + newAllCountList);
} else {
newAllCountList.add(objectMap1);
}

原先这样的代码输出为
[{weizhi=mid, dw=艾欧尼亚, renshu=20}, {weizhi=mid, dw=艾欧尼亚, renshu=20}, {weizhi=mid, dw=艾欧尼亚, renshu=20}]
需要改为

List<Map<String, Object>> allCountList = new ArrayList<Map<String, Object>>();
Map<String, Object> objectMap = new HashMap<String, Object>();
objectMap.put(“weizhi”, “”);
objectMap.put(“dw”, “艾欧尼亚”);
objectMap.put(“renshu”, “”);
allCountList.add(objectMap);
// Map<String, Object> objectMap1 = new HashMap<String, Object>();
// objectMap1.put(“dydj”, “”);
// objectMap1.put(“dw”, “昌吉”);
// objectMap1.put(“bdzsl”, “”);
// allCountList.add(objectMap1);
List<Map<String, Object>> newAllCountList = new ArrayList<Map<String, Object>>();
// for (Map<String, Object> objectMap2 : allCountList
// ) {
Map<String, Object> objectMap1 = allCountList.get(0);
if (objectMap1.get(“weizhi”).toString().equals("")) {
Map<String, Object> objectMap2 = new HashMap<String, Object>();
objectMap2.putAll(objectMap1);//这行代码解决指向问题
Map<String, Object> objectMap3 = new HashMap<String, Object>();
objectMap3.putAll(objectMap1);
objectMap1.put(“weizhi”, “sup”);
objectMap1.put(“renshu”, 15);
newAllCountList.add(objectMap1);
System.out.println(“1-------” + newAllCountList);
// Map<String, Object> objectMap1 = objectMap2;
objectMap2.put(“weizhi”, “ad”);
objectMap2.put(“renshu”, 53);
newAllCountList.add(objectMap2);
System.out.println(“2-------” + newAllCountList);
objectMap3.put(“weizhi”, “mid”);
objectMap3.put(“renshu”, 20);
newAllCountList.add(objectMap2);
System.out.println(“3-------” + newAllCountList);
} else {
newAllCountList.add(objectMap1);
}

输出为
[{weizhi=sup, dw=艾欧尼亚, renshu=15}, {weizhi=ad, dw=艾欧尼亚, renshu=53}, {weizhi=ad, dw=艾欧尼亚, renshu=53}]

解决0.0

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/handapeng1/article/details/86627583

智能推荐

SpringMVC中如何解决POST请求中文乱码问题GET的又如何处理_wuzhenwei0419的博客-程序员宝宝

SpringMVC中如何解决POST请求中文乱码问题GET的又如何处理解决POST请求中文乱码问题解决GET请求中文乱码问题解决POST请求中文乱码问题修改项目中web.xml文件&lt;filter&gt; &lt;filter-name&gt;CharacterEncodingFilter&lt;/filter-name&gt; &lt;filter-class&gt;o...

UVA - 548 Tree(已知中后序---建树---找路径最小的根节点)_zaiyang遇见的博客-程序员宝宝

题目链接:https://cn.vjudge.net/contest/317394#problem/ISample Input3 2 1 4 5 7 63 1 2 5 6 7 47 8 11 3 5 16 12 188 3 11 7 16 18 12 5255255Sample Output13255翻译:给出的是中序遍历和后序遍历,求从根节点到叶节点的最短路径所对应的...

美化DataGridView控件_hi_dzj的博客-程序员宝宝_datagridview美化

文章转载自:http://www.cnblogs.com/fmgs/archive/2011/01/01/1923713.html 开始做WinForm开发的时候,我想大家和我一样,都有一个相同的疑问。Windows可以做的如此漂亮,为什么它提供的开发控件确如此“平淡无奇”。甚至可以用普通来形容。时间长了以后才发现,原来可以通过OnPaint事件对控件的外观进行

git客户端工具sourceTree 无需安装需要注册atlassian账号_ZhangJQKb的博客-程序员宝宝

git客户端工具sourceTree 无需安装需要注册atlassian账号

23-Mybatis集成第三方缓存框架EHCache_前路无畏的博客-程序员宝宝

上一篇:22-Mybatis缓存相关设置对一级缓存和二级缓存的影响https://blog.csdn.net/fsjwin/article/details/109685932mybatis本身有缓存的实现,但是可以集成更专业的缓存框架比如:EHCache。1. Mybatis的缓存接口org.apache.ibatis.cache.Cache 为mybatis的缓存接口。加入依赖后的:2. Mybatis集成EHCache步骤2.1 导入依赖参考整合官网:http://myba

随便推点

QueryDSL介绍_一块巧克力@的博客-程序员宝宝_querydsl

1,QueryDSL仅仅是一个通用的查询框架,专注于通过Java API构建类型安全的SQL查询。2,Querydsl可以通过一组通用的查询API为用户构建出适合不同类型ORM框架或者是SQL的查询语句,也就是说QueryDSL是基于各种ORM框架以及SQL之上的一个通用的查询框架。3,借助QueryDSL可以在任何支持的ORM框架或者SQL平台上以一种通用的API方式来构建查询。目前Qu...

vue3 + ts vuedraggable 两个列表拖拽_魣啊的博客-程序员宝宝

安装依赖 要最新@next 不然会报错两个表格的拖拽 el-table不可用 只能自己写table tr td1.引入库yarn install [email protected]&lt;template&gt; &lt;div class="manual-manuscript"&gt; &lt;!--使用draggable组件--&gt; &lt;div class="search"&gt;搜索条件&lt;/div&gt; &lt;div cl.

Spring Security(07)——缓存UserDetails_elim168的博客-程序员宝宝

Spring Security提供了一个实现了可以缓存UserDetails的UserDetailsService实现类,CachingUserDetailsService。该类的构造接收一个用于真正加载UserDetails的UserDetailsService实现类。当需要加载UserDetails时,其首先会从缓存中获取,如果缓存中没有对应的UserDetails存在,则使用持有的UserD

python中convolve2d函数,Python中的2D卷积类似于Matlab的conv2_倪国阳的博客-程序员宝宝

I have been trying to do Convolution of a 2D Matrix using SciPy, and Numpy but have failed. For SciPy I tried, sepfir2d and scipy.signal.convolve and Convolve2D for Numpy. Is there a simple function l...

【人脸生成】PaddleGAN动态人脸生成_AI小白龙的博客-程序员宝宝_ai人脸生成网站

安装PaddleGANPaddleGAN的安装目前支持Clone GitHub和Gitee两种方式:In [4]# 安装ppgan# 当前目录在: /home/aistudio/, 这个目录也是左边文件和文件夹所在的目录# 克隆最新的PaddleGAN仓库到当前目录 !git clone https://github.com/PaddlePaddle/PaddleGAN.git# 如果从github下载慢可以从gitee clone: !git clone https://gitee

SO_RCVTIMEO超时errno_纵使微茫如烟的博客-程序员宝宝

首先打印一次recv调用失败的errno值和各个宏的值.由上可知,EAGIN和EWOULDBLOCK的值都是11,其实EAGIN是在setsockopt设置SO_RCVTIMEO或SO_SNDTIMEO后,recv或者send系列函数超时等待返回-1,此时的errno值。EWOULDBLOCK则是大家熟悉的异步调用产生的errno。recv return -1,errn...

推荐文章

热门文章

相关标签