欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于Map集合

程序员文章站 2022-06-04 22:35:06
控制台输出结果: 因为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集合

因为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集合