控制台輸出結果: 因為map的特點會將key相同的值替換掉,所以隨著for迴圈的執行,map的值一直在變 然後又因為map在foreach外,固List集合內map的引用是同一個map,沒有實現預想的結果 修改代碼如下: 將map集合寫到@2號位置,實現預想結果 ...
//錯誤代碼示範
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號位置,實現預想結果