关于HashMap存储问题


List<HashMap<String,Object>> dataList = new ArrayList<HashMap<String,Object>>();

HashMap<String,Object>hashMap = new HashMap<String, Object>();

    for(int i=0; i<5; i++){

    hashMap.put("pic1", R.drawable.ic_launcher);

        hashMap.put("text1", "items"+i);

        dataList.add(hashMap);

    }

执行之后为什么 dataList 里,"text1"字段 都是 items4  而不是我预期的 item0 item1 ... item4

Veritas丶
浏览 1622回答 2
2回答

丶小八戒

一个Key值只能对应一个Value。这里items0 items1 .. items4 的Key值都是text1,造成的后果就是后面的Value覆盖前面的Value。所有你取Key值为text1的Value值都是items4可以这样改hashMap.put("text"+i, "items"+i);// 打印List的元素for(int i = 0; i < dataList.size(); i++){ System.out.println(dataList.get(i).get("text"+i)); }

orangesweet

。。。因为当键是“一样”的时候,值会进行覆盖,这个具体请参考java的数据结构 HashMap
打开App,查看更多内容
随时随地看视频慕课网APP