一、提出问题
代码一:

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>>存放的对象问题相关推荐

  1. List(Map(String, Object))转为Fastjson JSONArray

    原始的 List<Map<String, Object>> test_list_map 内容如下: [{path=hdfs://manager:9000/testDir/1.t ...

  2. Map<String,Object> map=new HashMap<String,Object>详解

    Map是一个接口,即Interface Map<K,V>,其中K-key类型和V-value的类型 它的每个元素包含一个key对象和一个value对象,且在这两个对象之间存在一种映射的对应 ...

  3. List<Map<String, Object>>——多层嵌套的数据结构

    文章目录 快速理解多重嵌套结构 Map基础知识 List 例子 查询数据库 快速理解多重嵌套结构 对于多层嵌套的数据结构,需要层层分解. 以List<Map<String, Object& ...

  4. Map<String,Object>接收参数,Long类型降级为Integer,报类型转换异常

    前言 今天看群里小伙伴问了一个非常有意思的问题: 使用 Map<String,Object> 对象接收前端传递的参数,在后端取参时,因为接口文档中明确该字段类型为 Long ,所以对接收的 ...

  5. Map<String,List<Map<String, Object>>>遍历

    package com.java.day08; import java.util.*; /**  * @Auther: iteration.1  * @Date: 10/4/2021 - 04 - 1 ...

  6. 关于List<Map<String, Object>>个人理解

    首先map<String,Object>是定义了一个Map集合变量,然后list<map<String,Object>>是定义了一个List的集合变量,是map的一 ...

  7. List<String,Object>针对于集合中Map某个属性值求和

    假如你需要List<Map<String,Object>> 中Map中的每个属性值进行累加求和 代码如下: List<Map<String, Object>& ...

  8. 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 ...

  9. 处理实体与Map<String,Object>、json之间的转换

    处理实体与map,json之间的转换 实体与Map 实体与Map<String,Object>的转换 直接看代码,如下: package com.liu;import java.lang. ...

最新文章

  1. csv格式用什么打开可以编辑_如何用EXCEL/WPS整理航信版(金税盘/白盘)客户(商品)编码表...
  2. 调整linux的时钟
  3. 中tile函数_HelpGirlFriend 系列 --- tensorflow 中的张量运算思想
  4. 【Android】dip、dp、sp、pt和px的区别
  5. 2015年百度之星初赛(1) --- D KPI
  6. CSS学习摘要-数值和单位及颜色
  7. dataframe 控对象_iOS知识 - 常用小技巧大杂烩
  8. 《信息安全系统设计基础》 实验五
  9. java循环的内部改变循环变量的值_java在for循环中怎样修改参数值?
  10. Win7点击文件夹右键可打开cmd控制台,并获取当前目录
  11. Linux 查找满足条件的文件并复制
  12. GitChat · 前端 | JavaScript 进阶之 Vue.js + Node.js 入门实战开发
  13. thinkphp5.0.20 数据库迁移/填充
  14. [Intellij IDEA] 通过学生认证免费激活IDEA
  15. HTML5全栈工程师好就业吗
  16. 江苏联亚国际展览中心跨境展批发产品B2B门户线上展会平台matchup expo SEO工作日志
  17. 家庭监控安防行业存在哪些问题?看TSINGSEE青犀视频如何解决
  18. JS元素的提取,删除 ,添加,修改
  19. 数字经济时代,数据中心供电系统如何助力实现双碳目标
  20. 黑盒测试方法四(正交实验法)

热门文章

  1. 读书笔记----10日摘抄整理(11)
  2. mvc:annotation-driven /注解意义(转)
  3. SpringCloud Feign使用详解
  4. LeetCode Interleaving String
  5. Xamarin For Visual Studio 3.7.165 完整离线破解版
  6. C++ 指针与引用的差别
  7. Android P2P语音通话实现 【转】http://macleo.iteye.com/blog/1707455
  8. C#中IListT与ListT的区别感想
  9. 演练nerddinner 问题
  10. Vysor 2.1.x Pro使用