黑马程序员技术交流社区

标题: Map一对多代码运行结果有点小问题,自己解决不了,求高人帮忙 [打印本页]

作者: 王利强    时间: 2012-3-18 18:16
标题: Map一对多代码运行结果有点小问题,自己解决不了,求高人帮忙
代码如下,本来是想先打印一个班级名,然后打印班级里的学生。是班级名,学生,班级名,学生的格式,但运行后打印的是班级名,班级名,学生,学生的格式,看了半天,感觉代码没什么问题啊,求高人指点。
import java.util.*;
class student
{        private String id;
        private String name;
        student(String id,String name)
        {
                this.name=name;
                this.id=id;
        }
        public String toString()
        {
                return id+":"+name;
        }
       
}
class MapTest2

{        public static void main(String[] args)
        {  Demo();
        }
       
        public static void Demo()
        {HashMap<String,List<student>> czbk=new HashMap<String,List<student>>();
        List<student> yure=new ArrayList<student>();
        List<student> jiuye=new ArrayList<student>();
                czbk.put("yureban:",yure);
                czbk.put("jiuyeban:",jiuye);
                yure.add(new student("01","zhagnsan"));
                yure.add(new student("02","liai"));
                yure.add(new student("03","qNFQU"));
                yure.add(new student("01","zhagnsan1"));
                yure.add(new student("02","SUNSAN"));
                yure.add(new student("03","ZHAOLIU"));
                Iterator<String> it=czbk.keySet().iterator();
                while(it.hasNext())
                {        String roomname=it.next();
                        List<student> room=czbk.get(roomname);
                        System.out.println(roomname);
                        getStudent(room);
                }               
}

public static void getStudent(List<student> list )
        {        Iterator<student> it=list.iterator();
                while(it.hasNext())
                {
                        student s=it.next();
                       
                        System.out.println(s);
                }
        }
       
}
作者: 段浩亮    时间: 2012-3-18 20:45
你把学生都添加到预热班里了,迭代时先得到就业班,就业班为空,什么都没打印,接着得到预热班,并打印里边的学生,所以打印结果是那样的
作者: 李爱军    时间: 2012-3-18 20:56
楼上说的很对啊,你把信息都加到 预热班里了,就业班为空啊,没有数据,自然没法打印了啊。
按下面的修改一下就好了
czbk.put("yureban:",yure);
                czbk.put("jiuyeban:",jiuye);
                jiuye.add(new student("01","zhagnsan"));
                jiuye.add(new student("02","liai"));


                yure.add(new student("03","qNFQU"));
                yure.add(new student("01","zhagnsan1"));
                yure.add(new student("02","SUNSAN"));
                yure.add(new student("03","ZHAOLIU"));




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2