关于Map集合
Posted wangchen8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Map集合相关的知识,希望对你有一定的参考价值。
//错误代码示范
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集合的主要内容,如果未能解决你的问题,请参考以下文章