list存储对象的问题
今天碰到了一个问题,感觉可以写出来,防止忘记
代码如下
/*** @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存储对象的问题相关推荐
- 在HTML5 localStorage中存储对象
我想将JavaScript对象存储在HTML5 localStorage ,但是我的对象显然正在转换为字符串. 我可以使用localStorage存储和检索原始JavaScript类型和数组,但是对象 ...
- DCMTK:从DICOM封装的PDF存储对象中提取PDF文件
DCMTK:从DICOM封装的PDF存储对象中提取PDF文件 从DICOM封装的PDF存储对象中提取PDF文件 从DICOM封装的PDF存储对象中提取PDF文件 #include "dcmt ...
- javascript本地缓存方案-- 存储对象和设置过期时间
cz-storage 解决问题 1. 前端js使用localStorage的时候只能存字符串,不能存储对象 cz-storage 可以存储 object undefined number string ...
- ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象...
http://redis.readthedocs.org/en/latest/hash/hset.html HSET HSET key field value (存一个对象的时候key存) 将哈希 ...
- vector所存储对象地址在vector操作过程中发生变化
vector所存储对象地址在vector操作过程中发生变化 在编写搜索算法存储搜索路径的时候,以为无论如何vector的所有元素的地址都不变,比如vector<int> [0] ,就想去记 ...
- vmware挂载san存储_戏说 块存储 文件存储 对象存储
用通俗的语言 讲述复杂的技术 块存储 一个块存储设备通常包含一组控制器和一组磁盘阵列 大多数情况下,块存储是通过SAN网络连接服务器.当然,除了SAN网络之外,还有其它多种块存储访问方式,比如 ...
- html 属性存储对象,在HTML5 localStorage中存储对象
Stringify并不能解决所有问题 似乎这里的答案并未涵盖JavaScript中可能的所有类型,因此这里有一些关于如何正确处理它们的简短示例://Objects and Arrays: var ob ...
- bw项目抱佛脚入门资料-2.按照指标创建BW数据存储对象
提示:这篇文章可以学习如何根据用户收上来的指标进行BW数据建模 bw项目抱佛脚入门资料-2.按照指标创建BW数据存储对象 前言 一.创建InfoArea-信息域 二.创建信息对象目录 三.创建信息对象 ...
- android SharedPreferences 存储对象
原文地址为: android SharedPreferences 存储对象 我们知道SharedPreferences只能保存简单类型的数据,例如,String.int等. 如果想用SharedPre ...
- android sqlite 存储对象,SQLite存储对象
前言 sqliteDataBase能存储的数据类型有: 1.NULL:空值. 2.INTEGER:带符号的整型,具体取决有存入数字的范围大小. 3.REAL:浮点数字,存储为8-byte IEEE浮点 ...
最新文章
- android发送json格式,Android---创建Json格式数据
- 类型实现《程序员的第一年》--------------C#中System.Collections.Generic.SortedDictionary 的使用...
- python冒泡排序实验报告_python中的冒泡排序
- 技术债务_如何处理技术债务并节省理智
- 用js判断.net版本
- Laravel 大将之 路由 模块
- github设置添加SSH(转载自:破男孩)
- mysql 字符串的hash函数_【转载】字符串Hash函数比较
- sublime及插件 使用
- 咪蒙,毕业两年成阿里P7,不止阿里HR不同意......
- Qt 编译器添加 vs编译器
- 网页中的QQ和阿里旺旺聊天图标
- KiCad 部分插件安装
- 【岗位技能要求】人工智能+Python
- python查看微信撤回消息怎么弄_Python3爬虫查看微信撤回消息
- 图像处理-图像金字塔
- SaaS营销网站剖析:SaaS定价页面,转化率的关键点
- Manjaro + Windows 双系统安装指南
- 如何检测内存泄漏(转)
- 将串口接收的数据绘制成波形图(使用matlab或Visual Scope)