码迷,mamicode.com
首页 > 其他好文 > 详细

关于Map集合

时间:2018-12-08 21:13:15      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:result   color   bubuko   for循环   img   list   结果   object   for   

//错误代码示范
List<Map<String,Object>> result=new ArrayList<Map<String, Object>>(); Map<String,Object> map=new HashMap<String, Object>();//@1 List<Role> roleList=new ArrayList<Role>(); Role r1=new Role(); r1.setId(1L); r1.setRoleName("系统管理员"); Role r2=new Role(); r2.setId(2L); r2.setRoleName("工人"); Role r3=new Role(); r3.setId(3L); r3.setRoleName("学生"); roleList.add(r1); roleList.add(r2); roleList.add(r3); for (Role role:roleList ) { map.put("id",role.getId()); map.put("roleName",role.getRoleName()); result.add(map); System.out.println(result); }

控制台输出结果:

  技术分享图片

因为map的特点会将key相同的值替换掉,所以随着for循环的执行,map的值一直在变

然后又因为map在foreach外,固List集合内map的引用是同一个map,没有实现预想的结果

 

修改代码如下:

List<Map<String,Object>> result=new ArrayList<Map<String, Object>>();
        List<Role> roleList=new ArrayList<Role>();
        Role r1=new Role();
        r1.setId(1L);
        r1.setRoleName("系统管理员");
        Role r2=new Role();
        r2.setId(2L);
        r2.setRoleName("工人");
        Role r3=new Role();
        r3.setId(3L);
        r3.setRoleName("学生");
        roleList.add(r1);
        roleList.add(r2);
        roleList.add(r3);
        for (Role role:roleList
                ) {
            Map<String,Object> map=new HashMap<String, Object>();//@2
            map.put("id",role.getId());
            map.put("roleName",role.getRoleName());
            result.add(map);
            System.out.println(result);
        }

将map集合写到@2号位置,实现预想结果

技术分享图片

 

关于Map集合

标签:result   color   bubuko   for循环   img   list   结果   object   for   

原文地址:https://www.cnblogs.com/wangchen8/p/10088958.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!