例解List<Map<String, Object>>存放的对象问题
一、提出问题
代码一:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class Test {public static void main(String args[]) {List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); Map<String, Object> map = new HashMap<String, Object>(); for(int i=0;i<5;i++) {
// Map<String, Object> map = new HashMap<String, Object>(); map.put("a", i); map.put("b", i); list.add(map); } System.out.println(list);}
}
代码二:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class Test {public static void main(String args[]) {List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
// Map<String, Object> map = new HashMap<String, Object>(); for(int i=0;i<5;i++) {Map<String, Object> map = new HashMap<String, Object>(); map.put("a", i); map.put("b", i); list.add(map); } System.out.println(list);}
}
二、给出答案
猜猜看代码一二运行的结果分别是啥?
没错,就是:
代码一:
[{a=4,b=4},{a=4,b=4},{a=4,b=4},{a=4,b=4},{a=4,b=4}]
代码二:
[{a=0,b=0},{a=1,b=1},{a=2,b=2},{a=3,b=3},{a=4,b=4}]
三、问题分析
代码一中,List<Map<String, Object>>里面存放的是map对象的地址,尽管循环了五次,但是每次的map对象对应的都是同一个地址,即listMap里面存放的是五个同样的map对象。
代码二中,每次循环的时候都实例化一个新的map对象,这样list在执行add方法的时候,每次都是存的不一样的map对象。
可以通过debug来观察list存放的map对象对应的id。如图:
代码一:
代码二:
四、总结
通过上面的分析,我们可以知道,以后需要创建不同的map对象的时候,需要在循环里面进行map的创建。
而不是在循环体外面,因为List<Map<String, Object>>指向的是map对象的地址。
例解List<Map<String, Object>>存放的对象问题相关推荐
- List(Map(String, Object))转为Fastjson JSONArray
原始的 List<Map<String, Object>> test_list_map 内容如下: [{path=hdfs://manager:9000/testDir/1.t ...
- Map<String,Object> map=new HashMap<String,Object>详解
Map是一个接口,即Interface Map<K,V>,其中K-key类型和V-value的类型 它的每个元素包含一个key对象和一个value对象,且在这两个对象之间存在一种映射的对应 ...
- List<Map<String, Object>>——多层嵌套的数据结构
文章目录 快速理解多重嵌套结构 Map基础知识 List 例子 查询数据库 快速理解多重嵌套结构 对于多层嵌套的数据结构,需要层层分解. 以List<Map<String, Object& ...
- Map<String,Object>接收参数,Long类型降级为Integer,报类型转换异常
前言 今天看群里小伙伴问了一个非常有意思的问题: 使用 Map<String,Object> 对象接收前端传递的参数,在后端取参时,因为接口文档中明确该字段类型为 Long ,所以对接收的 ...
- Map<String,List<Map<String, Object>>>遍历
package com.java.day08; import java.util.*; /** * @Auther: iteration.1 * @Date: 10/4/2021 - 04 - 1 ...
- 关于List<Map<String, Object>>个人理解
首先map<String,Object>是定义了一个Map集合变量,然后list<map<String,Object>>是定义了一个List的集合变量,是map的一 ...
- List<String,Object>针对于集合中Map某个属性值求和
假如你需要List<Map<String,Object>> 中Map中的每个属性值进行累加求和 代码如下: List<Map<String, Object>& ...
- type ‘_Map<String, dynamic>‘ is not a subtype of type ‘Map<String, Object>‘
type '_Map<String, dynamic>' is not a subtype of type 'Map<String, Object>' 使用Map<Str ...
- 处理实体与Map<String,Object>、json之间的转换
处理实体与map,json之间的转换 实体与Map 实体与Map<String,Object>的转换 直接看代码,如下: package com.liu;import java.lang. ...
最新文章
- csv格式用什么打开可以编辑_如何用EXCEL/WPS整理航信版(金税盘/白盘)客户(商品)编码表...
- 调整linux的时钟
- 中tile函数_HelpGirlFriend 系列 --- tensorflow 中的张量运算思想
- 【Android】dip、dp、sp、pt和px的区别
- 2015年百度之星初赛(1) --- D KPI
- CSS学习摘要-数值和单位及颜色
- dataframe 控对象_iOS知识 - 常用小技巧大杂烩
- 《信息安全系统设计基础》 实验五
- java循环的内部改变循环变量的值_java在for循环中怎样修改参数值?
- Win7点击文件夹右键可打开cmd控制台,并获取当前目录
- Linux 查找满足条件的文件并复制
- GitChat · 前端 | JavaScript 进阶之 Vue.js + Node.js 入门实战开发
- thinkphp5.0.20 数据库迁移/填充
- [Intellij IDEA] 通过学生认证免费激活IDEA
- HTML5全栈工程师好就业吗
- 江苏联亚国际展览中心跨境展批发产品B2B门户线上展会平台matchup expo SEO工作日志
- 家庭监控安防行业存在哪些问题?看TSINGSEE青犀视频如何解决
- JS元素的提取,删除 ,添加,修改
- 数字经济时代,数据中心供电系统如何助力实现双碳目标
- 黑盒测试方法四(正交实验法)
热门文章
- 读书笔记----10日摘抄整理(11)
- mvc:annotation-driven /注解意义(转)
- SpringCloud Feign使用详解
- LeetCode Interleaving String
- Xamarin For Visual Studio 3.7.165 完整离线破解版
- C++ 指针与引用的差别
- Android P2P语音通话实现 【转】http://macleo.iteye.com/blog/1707455
- C#中IListT与ListT的区别感想
- 演练nerddinner 问题
- Vysor 2.1.x Pro使用