zoukankan      html  css  js  c++  java
  • HashMap封装的数据用循环快速添加进list中产生的数据集全部相同的问题

    一、问题概述

    在一次使用SimpleAdapter时,Data需要使用传入一条数据(Image、Text),该数据条使用HashMap封装。在用HashMap封装的数据用循环快速添加进list中产生了数据集全部相同的问题

    二、问题解决

    观察下面两段代码,发现只是map的声明位置不同,但是运行出的结果却相去甚远。

        //代码一
        List<HashMap<String, Object>> mMenuData = new ArrayList<>();
        HashMap<String, Object> map = new HashMap<>();
        for (int i = 0; i < menuShareImg.length; i++) {
                map.put("shareStr", menuShareStr[i]);
                map.put("shareImg", menuShareImg[i]);
                mMenuData.add(map);
        }
    
        //代码二
        List<HashMap<String, Object>> mMenuData = new ArrayList<>();
        for (int i = 0; i < menuShareImg.length; i++) {
                HashMap<String, Object> map = new HashMap<>();
                map.put("shareStr", menuShareStr[i]);
                map.put("shareImg", menuShareImg[i]);
                mMenuData.add(map);
        }
    

    代码一会产生上述问题,代码二则能消除问题。

    三、说明

    产生问题的原因很简单。发生了覆盖。仔细一想就能想明白~~

  • 相关阅读:
    google
    学习Linux第六天
    对比教学大纲
    周 记
    《世界是数字的》读后感
    《我是一只IT小小鸟》读后感
    前端小知识
    JavaScript 执行机制
    执行栈和任务队列
    支付宝前端员工培训手册
  • 原文地址:https://www.cnblogs.com/neillee/p/5406394.html
Copyright © 2011-2022 走看看