关于list中存储map数据重复问题
2017-03-08 12:34
477 查看
以下两段代码中存储的数据有所差异
其中第一组的输出是:
{测试=c}---
{测试=c}---
{测试=c}---
第二组的输出是:
{测试=a}***
{测试=b}***
{测试=c}***
我们发现两组输出的数据不通,只因map放置的位置不同而已。
在第一组代码中,list存放的是通一个map对象,在堆内存中map指向的是同一个地址,这种情况下就会发生数据的重复或者说是覆盖;
在第二组中我们将map放进了循环里面,这样在每次循环的时候都会重新再实例化一个map对象,使map对象在堆内存中指向的地址不同,所以输出的数据也就是不一样的。
public static void main(String[] args) { List list = new ArrayList(); list.add("a"); list.add("b"); list.add("c"); // 第一组 List list1 = new ArrayList(); Map map = new HashMap<String, String>(); for (int i = 0; i < list.size(); i++) { map.put("测试", list.get(i)); list1.add(map); } for (int j = 0; j < list1.size(); j++) { System.out.println(list1.get(j)+"---"); } // 第二组 List list2 = new ArrayList(); for (int i = 0; i < list.size(); i++) { Map map2 = new HashMap<String, String>(); map2.put("测试", list.get(i)); list2.add(map2); } for (int j = 0; j < list2.size(); j++) { System.out.println(list2.get(j)+"***"); } }
其中第一组的输出是:
{测试=c}---
{测试=c}---
{测试=c}---
第二组的输出是:
{测试=a}***
{测试=b}***
{测试=c}***
我们发现两组输出的数据不通,只因map放置的位置不同而已。
在第一组代码中,list存放的是通一个map对象,在堆内存中map指向的是同一个地址,这种情况下就会发生数据的重复或者说是覆盖;
在第二组中我们将map放进了循环里面,这样在每次循环的时候都会重新再实例化一个map对象,使map对象在堆内存中指向的地址不同,所以输出的数据也就是不一样的。
相关文章推荐
- Flex中DataGrid通过存储在List中的JAVABEAN提供数据时候,数据不能正常显示的问题
- 关于map的数据排序问题(hashmap,treemap)
- 关于MapWinGIS的编译以及打开中文数据的问题
- VMware vSphere Cluster的关于此主机当前没有管理网络冗余及数据存储数目为0的问题
- Android中List与Map<String,Object>及SimpleAdapter用来存储数据并展示出来的联合用法
- Set,List , Map , Vector,ArrayList存储数据的应用
- 关于复杂数据存储的问题--基础篇:数组以及浅拷贝与深拷贝的问题
- 关于Map数据插入读取的问题
- 数据结构中,关于“大小端”的数据存储方式的相关问题
- 关于oracle 去掉重复数据问题
- 关于Hibernate中fatch=eager的bag集合(一个java List)使用Criteria查询出现重复记录的问题
- 关于刷新html页面,数据重复提交的问题
- 存储分析:常见重复数据删除系统问题
- 关于listitem点击事件根据position取得数据库数据Onresume()更新Adapter后取得数据错误的问题
- 关于jquery解析json数据时动态追加tr 指定条数换行问题 实现list的 并列显示效果
- 关于“重复数据删除”技术的十大问题 推荐
- java笔记:关于复杂数据存储的问题--基础篇:数组以及浅拷贝与深拷贝的问题(上)
- SenchaTouch2中list组件无法绑定存储或者绑定后仍旧无法显示数据问题解决
- 计算机内部如何存储数据,关于源码、补码的问题!
- C++存储数据结构List、CArray、Vector和Map使用分析