有关ArrayList增加Map引发的一个BUG
来源:互联网 发布:stm32f103rct6数据手册 编辑:程序博客网 时间:2024/06/06 20:39
今天碰到一个很奇怪的问题。用一个ArrayList来增加map.具体是这样的:
for(int i=0;i<arr.length();++i){ temp = (JSONObject) arr.get(i); mapTemp.clear(); mapTemp.put("materialName", temp.getString("materialName")); mapTemp.put("materialFormat", temp.getString("unitName")); mapTemp.put("id", temp.getString("id")); listItem.add(mapTemp); Log.i("mapGet=========", listItem.get(i).get("materialName"));}
本来是为了效率考虑,不用每次都重新创建MAp.就使用他的clear方法。结果发现竟然List中存放的MAP数据都是相同的。当时觉得很不可理解。
后来经过跟踪发现了问题,List每次把map的引用存进去,当调用map的clear()方法后,map里面数据会被清空,最后map的数据就是最后放进去的。而List里放的都是这个map的引用。因此也就不难理解为什么会出现存放的数据是最后一次放进去的情况了。
解决的方法就是每次都要创建。。。。
HashMap<String, String> mapTemp = null;for(int i=0;i<arr.length();++i){ temp = (JSONObject) arr.get(i); mapTemp = new HashMap<String, String>(); mapTemp.put("materialName", temp.getString("materialName")); mapTemp.put("materialFormat", temp.getString("unitName")); mapTemp.put("id", temp.getString("id")); listItem.add(mapTemp); Log.i("mapGet=========", listItem.get(i).get("materialName"));}
2 0
- 有关ArrayList增加Map引发的一个BUG
- java中对于Map引发的一个bug
- 一个BUG引发的...
- 一个BUG引发的思考
- 一个bug引发的感想
- 一个bug引发的“血案”
- bug记事:STL map 引发的血案
- 一个有关sizeof的bug
- 一个有关全局变量引发的错误。
- 一个bug引发的血案(大爆炸)
- 一个失误引发的奇怪线程BUG
- 一个Date对象引发的诡异bug
- 一个“-1.#INF000”引发的bug
- 一个移位操作引发的程序Bug
- 一个iOS bug引发的思考
- 一个由CountDownLatch引发的Bug
- 一个bug引发的哲学思考
- 一个有关fstream类的bug
- 排列算法 C++实现
- 开学了
- 字符串转换为整数
- 在COCOS2D-X中使用DRAGONBONES实现骨骼动画
- linux kmalloc与vmalloc区别
- 有关ArrayList增加Map引发的一个BUG
- Ratchet:构建移动应用原型,新版支持Android
- R language簡介(下)
- 通过JS,Jquery判断某个字符在一个字符串中是否存在的方法
- 判断当前时间和有效期是否大于30天
- 1hdu022数据结构堆栈-火车进站
- 操作系统各大公司笔试题汇总
- Qt Creator 配置MSVC 2010的调试器
- 【数据结构】 稀疏矩阵 转换成三元组