ArrayList add方法会导致数据覆盖。
来源:互联网 发布:免费啪啪的软件 编辑:程序博客网 时间:2024/05/01 11:01
ArrayList<HashMap<String, Object>> listData = new ArrayList<HashMap<String, Object>>(); int number = 0; HashMap<String, Object> map = new HashMap<String, Object>(); while (number < 20) { if(number==19) { String name ="zcl"; String user ="ewfe"; } else{ String name ="hehe"; String user ="lailai"; } map.put("name",name); map.put("user",user); listData.add(map); number++; System.out.println(listData);}
这时候输出的listdata里面所有的值都是一样的,因为我们map的内层是不变的,我们每次调用函数改变的都是他的内容,也就是我们是添加了引用到add方法中,所以结果都是一样的,都是最后的数据覆盖了前面的数据。
ArrayList<HashMap<String, Object>> listData = new ArrayList<HashMap<String, Object>>(); int number = 0; while (number < 20) { HashMap<String, Object> map = new HashMap<String, Object>(); if(number==19) { String name ="zcl"; String user ="ewfe"; } else{ String name ="hehe"; String user ="lailai"; } map.put("name",name); map.put("user",user); listData.add(map); number++; System.out.println(listData);}
把map的内存分配放到while循环里面,每次程序都会把map的内存进行重新分配,listData的add方法每次都能够成功的添加不同内存中数据,所以不会覆盖。这个在实际开发过成中,坑了我一个下午,一开始我还以为是编译器出现了问题。
特此记录下。
0 0
- ArrayList add方法会导致数据覆盖。
- ArrayList add()方法覆盖数据解决办法
- ArrayList.add()添加一个元素后,会把前面一个元素覆盖
- 使用ArrayList.add()时 后面的数据完全覆盖前面的数据
- ArrayList add()方法
- ArrayList add方法
- List add方法覆盖
- 20161109 ArrayList set add方法 替换对应位置数据
- java ArrayList add()方法数据被覆盖问题
- List使用add方法添加数据时的覆盖问题
- List使用add方法添加数据时的覆盖问题
- 解决list.add() 方法会覆盖前面的已经添加好的参数
- ArrayList的add()方法使用
- 慎用subList:ArrayList$SubList.add导致的java.lang.StackOverflowError
- list.add数据覆盖的问题
- list.add时的数据覆盖问题
- 关于ArrayList.add方法的问题
- ArrayList的add和remove方法
- 树莓派Web登录校园网WIFI热点DJTU
- 装饰者模式
- 使用nginx反向代理tomcat服务
- [实战案例一]-dubbo-consumer 执行时间慢
- Fragment的介绍和使用(一)
- ArrayList add方法会导致数据覆盖。
- 表备份
- mybatis例子
- 学习python单元测试框架nose之---01nose框架初探
- nginx基本配置
- Fragment的介绍和使用(二)
- linux centos6.7安装nginx1.6 php5.6.15
- 关于SQL Server将一列的多行内容拼接成一行
- 谈谈css里面的一些小知识