今天碰到一个很奇怪的问题。用一个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"));}

有关ArrayList增加Map引发的一个BUG相关推荐

  1. linux进程文件描述符 vnode,从flock引发的一个bug谈起(1) 进程的文件描述符

    引子 前两天我们QA发现了一个比较有意思的bug,我细细分析一下,发现多个进程卡死在一个·配置文件上.简单的说,我们为了防止多个进程同时写同一个配置文件,将文件格式破坏,我们用了flock,对于写打开 ...

  2. 『转』度百死去飞秋一个BUG引发的血案

    作了一篇文章度百死去飞秋一个BUG引发的血案,昨天,度百死去的美国客户发邮件给我,说我的软件出问题了,我查来查去,发现居然是服务器上一个目录无法删除,一删除就报 cannot read from th ...

  3. 由 HashMap 引发的一个面试10连炮争吵!

    作者:卓庆森 来源:cnblogs.com/zhuoqingsen/p/HashMap.html 现在是晚上11点了,学校屠猪馆的自习室因为太晚要关闭了,勤奋且疲惫的小鲁班也从屠猪馆出来了,正准备回宿 ...

  4. 从一个 bug 中延伸出 canvas 最大内存限制和浏览器渲染原理

    本文作者:雨过天晴 https://zhuanlan.zhihu.com/p/540761999 前几天一个同事让我帮忙解决一个 bug,这个 bug 困扰他好几天了.这是一个 App 中的 Hybr ...

  5. 一个bug管理软件:BugFree

    一个bug管理软件:BugFree BugFree的发展目标:代替BugZilla和Mantis,成为最流行的Bug管理系统! 关于BugFree 作者:刘振飞 Email: liuzf at pku ...

  6. 【总结】1519- 从一个 bug 中延伸出 canvas 最大内存限制和浏览器渲染原理

    本文作者:雨过天晴 https://zhuanlan.zhihu.com/p/540761999 前几天一个同事让我帮忙解决一个 bug,这个 bug 困扰他好几天了.这是一个 App 中的 Hybr ...

  7. 一个Bug能有多大影响:亏损30亿、致6人死亡、甚至差点毁灭世界...

    欢迎关注方志朋的博客,回复"666"获面试宝典 作者:博雯   来源:量子位(QbitAI) 一个Bug就地蒸发5亿美元: 软件设计层面出Bug致6人死亡: DeBug不成功直接世 ...

  8. 从一个Bug开始,重新认识一个强大的 Gson

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 作者:Mafly, 地址:www.cnblogs.com/mafly/p/gson.html 从 ...

  9. [原创] Easy SysLite V1.2 (2016.5.29更新,新增加WIN10支持,一个程序适配所有系统减肥)...

    [原创] Easy SysLite V1.2 (2016.5.29更新,新增加WIN10支持,一个程序适配所有系统减肥) nohacks 发表于 2016-5-29 17:12:51 https:// ...

最新文章

  1. 孙正义万字访谈:AI是我现在唯一关注的事情,我是科技的绝对信徒
  2. python画折线图详解-利用python画折线图
  3. java中 hashmap中小数,java基础知识--HashMap中对 h(length-1)的理解
  4. python matplotlib.pyplot() plt() 如何限制坐标的上下限?plt.xlim() plt.ylim()
  5. 你知道WPF这三大模板实例运用吗?
  6. php培训出生做微电影网站的,微电影分享网站织梦整站源码
  7. java aspectj_AspectJ的基本用法
  8. Android 8.0 学习(12)---init.rc语法及解析过程总结
  9. 短命的 CentOS 8 将停止维护
  10. 支持IE,Firefox的日历控件
  11. matlab imagesc 保存,在matlab中保存imagesc的精确图像输出
  12. 微信小程序图片缓存问题
  13. mmap内存映射用法总结
  14. win7没有语音识别怎么办|win7系统语音识别设置方法
  15. 首屈一指的全球招聘与薪资支付平台Deel收购Zeitgold,以增强薪资和人工智能服务
  16. word删除分页符的两种方法
  17. Dline,一款让你爱不释手的去中心化社交应用
  18. java自定义封装一个方法_Java自定义套件封装教程
  19. 基于vue+elementui 月子中心会所系统web
  20. Java书写文字格斗游戏

热门文章

  1. jquery组件WebUploader文件上传用法详解
  2. Unity Js与C#脚本通信
  3. Java 8新特性探究(五)重复注解(repeating annotations)
  4. [转载]我的WCF之旅(3):在WCF中实现双工通信
  5. vs2005智能提示快捷键,智能完成消失了怎么调出来。
  6. C语言中一个指针传递问题的分析
  7. 敏捷结果30天练习即将开始
  8. 上传文件到阿里云OSS对象存储,查询访问地址,删除文件
  9. 侣信即时通讯系统全新发布
  10. iOS笔记(一)GCD多线程:信号量和条件锁