今天碰到了一个问题,感觉可以写出来,防止忘记

代码如下

/*** @author Pan*/
public class ListSaveMap {public static void main(String[] args) {Map<String,Object> map = new HashMap<>();ArrayList<Map<String,Object>> list = new ArrayList();for (int i = 0; i < 3; i++) {map.put("name","name"+i);map.put("id",""+i);list.add(map);}System.out.println(list);}
}

这个时候问题来了,猜猜输出的会是什么?

答案是:

是不是突然愣了一下子,对的,当时我也愣了

然后仔细回想一下以前学的知识,发现,list集合存储的时候,存储的不是数据,而是对象的地址

当循环里的map集合数据改变的时候,影响的是外面的map,所以导致list虽然添加了三次map集合

但是他们三个的地址都是一样的,都是循环外的那个map

当最后一次修改数据后,map的数据变成{name=name2, id=2},然后输出list,list从对象地址中获取数据,获取出来的都是{name=name2, id=2},所以遍历就都是在遍历同一个map的值。

最后说下如何修改:很简单,将创建对象的操作放到循环里面即可

这样输出就是正确的值了

list存储对象的问题相关推荐

  1. 在HTML5 localStorage中存储对象

    我想将JavaScript对象存储在HTML5 localStorage ,但是我的对象显然正在转换为字符串. 我可以使用localStorage存储和检索原始JavaScript类型和数组,但是对象 ...

  2. DCMTK:从DICOM封装的PDF存储对象中提取PDF文件

    DCMTK:从DICOM封装的PDF存储对象中提取PDF文件 从DICOM封装的PDF存储对象中提取PDF文件 从DICOM封装的PDF存储对象中提取PDF文件 #include "dcmt ...

  3. javascript本地缓存方案-- 存储对象和设置过期时间

    cz-storage 解决问题 1. 前端js使用localStorage的时候只能存字符串,不能存储对象 cz-storage 可以存储 object undefined number string ...

  4. ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象...

    http://redis.readthedocs.org/en/latest/hash/hset.html HSET HSET key field value   (存一个对象的时候key存) 将哈希 ...

  5. vector所存储对象地址在vector操作过程中发生变化

    vector所存储对象地址在vector操作过程中发生变化 在编写搜索算法存储搜索路径的时候,以为无论如何vector的所有元素的地址都不变,比如vector<int> [0] ,就想去记 ...

  6. vmware挂载san存储_戏说 块存储 文件存储 对象存储

    用通俗的语言 讲述复杂的技术   块存储   一个块存储设备通常包含一组控制器和一组磁盘阵列 大多数情况下,块存储是通过SAN网络连接服务器.当然,除了SAN网络之外,还有其它多种块存储访问方式,比如 ...

  7. html 属性存储对象,在HTML5 localStorage中存储对象

    Stringify并不能解决所有问题 似乎这里的答案并未涵盖JavaScript中可能的所有类型,因此这里有一些关于如何正确处理它们的简短示例://Objects and Arrays: var ob ...

  8. bw项目抱佛脚入门资料-2.按照指标创建BW数据存储对象

    提示:这篇文章可以学习如何根据用户收上来的指标进行BW数据建模 bw项目抱佛脚入门资料-2.按照指标创建BW数据存储对象 前言 一.创建InfoArea-信息域 二.创建信息对象目录 三.创建信息对象 ...

  9. android SharedPreferences 存储对象

    原文地址为: android SharedPreferences 存储对象 我们知道SharedPreferences只能保存简单类型的数据,例如,String.int等. 如果想用SharedPre ...

  10. android sqlite 存储对象,SQLite存储对象

    前言 sqliteDataBase能存储的数据类型有: 1.NULL:空值. 2.INTEGER:带符号的整型,具体取决有存入数字的范围大小. 3.REAL:浮点数字,存储为8-byte IEEE浮点 ...

最新文章

  1. android发送json格式,Android---创建Json格式数据
  2. 类型实现《程序员的第一年》--------------C#中System.Collections.Generic.SortedDictionary 的使用...
  3. python冒泡排序实验报告_python中的冒泡排序
  4. 技术债务_如何处理技术债务并节省理智
  5. 用js判断.net版本
  6. Laravel 大将之 路由 模块
  7. github设置添加SSH(转载自:破男孩)
  8. mysql 字符串的hash函数_【转载】字符串Hash函数比较
  9. sublime及插件 使用
  10. 咪蒙,毕业两年成阿里P7,不止阿里HR不同意......
  11. Qt 编译器添加 vs编译器
  12. 网页中的QQ和阿里旺旺聊天图标
  13. KiCad 部分插件安装
  14. 【岗位技能要求】人工智能+Python
  15. python查看微信撤回消息怎么弄_Python3爬虫查看微信撤回消息
  16. 图像处理-图像金字塔
  17. SaaS营销网站剖析:SaaS定价页面,转化率的关键点
  18. Manjaro + Windows 双系统安装指南
  19. 如何检测内存泄漏(转)
  20. 将串口接收的数据绘制成波形图(使用matlab或Visual Scope)

热门文章

  1. 渭南高中计算机学校,渭南市临渭区高中全日制学校
  2. J-LINK回读设备中的固件内容
  3. 是笑话,是悲凉,是笑后的真实,是真实后的悲凉
  4. 小辣鸡的Android开发之路-应用冻结器-4-实现应用的禁止和解禁
  5. 睡姿不对,心脏受累,到底哪个睡姿适合你
  6. MEMS IMU 校准算法
  7. VR全景旅游,成为数字文旅破局关键!
  8. 基于神经网络(RBF)补偿的双关节机械手臂自适应控制
  9. 米联客 ZYNQ/SOC精品教程 S02-CH13 CAN总线通信实验
  10. 服务器为什么会宕机?如何实现宕机切换?