java List<map>赋值的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java List<map>赋值的问题相关的知识,希望对你有一定的参考价值。

public String treatmentstatistics(@RequestParam(value = "eplanid") String eplanid,Model model)

// 由风险评估计划名称查询风险事件和风险应对计划名称
List<Map<String, String>> finishMapList = new ArrayList<Map<String, String>>();
Map<String, String> map = new HashMap<String, String>();
map.put("key", "A");
map.put("key", "A");
finishMapList.add(map);

map.put("key", "B");
map.put("key", "B");
finishMapList.add(map);
model.addAttribute("finishMapList", finishMapList);
return "rm/riskmanager/isfinishtreatment";


我的想法是list中有两个map,分别存
<key,A><key,A>和<key,B><key,B>,
但是实际却存的是
<key,B><key,B>和<key,B><key,key>
都存成后一个了。

List<Map<String, String>> finishMapList = new ArrayList<Map<String, String>>();
        Map<String, String> map = new HashMap<String, String>();
        map.put("key", "A");
        map.put("key", "A");
        finishMapList.add(map);
        
        map = new HashMap<String, String>(); //map要重新new不然还是上一个map
        map.put("key", "B");
        map.put("key", "B");
        finishMapList.add(map);
        model.addAttribute("finishMapList", finishMapList);
        return "rm/riskmanager/isfinishtreatment";
        
    

map要重新new不然还是上一个map.

map.put("key", "B");其实是在修改map中的内容不是新的

不知道这样说你明不明白

不明白就继续问吧

参考技术A map是key/value的形式存数据的,你把所有的key都设成'key',那么先存的数据就被后面的覆盖了 参考技术B 中间少了一句,map = new HashMap<String, String>()
map.put(key B);
参考技术C 你需要重新new一个Map来保存B
Map<String, String> map1 = new HashMap<String, String>();
map.put("key", "A");
map.put("key", "A");
finishMapList.add(map);
Map<String, String> map2 = new HashMap<String, String>();
map.put("key", "B");
map.put("key", "B");
finishMapList.add(map);
参考技术D map.put("key", "A");

键名一样被覆盖了
第5个回答  2014-09-17 Map集合是根据key 去存储数据的 所以当它们key 相同时是存储最新的一个 你可以使用list 或多new几个Map 集合去存储

以上是关于java List<map>赋值的问题的主要内容,如果未能解决你的问题,请参考以下文章

Java嵌套list赋值

java map集合赋值 key值相同覆盖问题

java 从数据库中返回来的数据list<Map<String ,Object>> 做拼接处理

struts2标签中在jsp页面如何给值栈中的list和map赋值

Java泛型

java list赋值问题?