public class Test1 { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
/*for(int i=0;i<5;i++){
for(int j=0;j<=i;j++){
System.out.print("*");
}
System.out.println();
}*/

Map<String,Classes> m1 = new HashMap<String,Classes>();
Student s1 = new Student(1,"张三",18);
Student s2 = new Student(2,"李四",20);
Student s3 = new Student(3,"王五",21);

Student s4 = new Student(4,"李磊",19);
Student s5 = new Student(5,"韩梅梅",10);
Student s6 = new Student(6,"露丝",11);


Student s7 = new Student(7,"才衣领",84);
Student s8 = new Student(8,"荣组二",73);
Student s9 = new Student(9,"周结论",97);


Set<Student> ss1 =   new HashSet<Student>();
Set<Student> ss2 =   new HashSet<Student>();
Set<Student> ss3 =   new HashSet<Student>();


ss1.add(s1);
ss1.add(s2);
ss1.add(s3);

ss2.add(s4);
ss2.add(s5);
ss2.add(s6);

ss3.add(s7);
ss3.add(s8);
ss3.add(s9);

Classes c1 = new Classes(1,"物理",ss1);
Classes c2 = new Classes(2,"英文",ss2);
Classes c3 = new Classes(3,"革命",ss3);


m1.put("c1",c1);
m1.put("c2", c2);
m1.put("c3", c3);


Set<Student> set1  = new HashSet<Student>();
//遍历Map
for( Map.Entry<String, Classes> entry:m1.entrySet()){
set1 = entry.getValue().getStudents();
for(Student s:set1){
System.out.println("学生姓名:"+set1.iterator().next().getName());
}
}

}}这个很简单,就是把学生放到班级里面,然后把班级放到一个MAP里面,然后遍历这个MAP得到所有的班级,然后再遍历一遍得到所有的学生,班级和学生这两个类比较简单就不写了,但是上面的代码除了错误。得到的结果如下:
学生姓名:李四
学生姓名:李四
学生姓名:李四
学生姓名:露丝
学生姓名:露丝
学生姓名:露丝
学生姓名:荣组二
学生姓名:荣组二
学生姓名:荣组二这个程序在哪里出错了呢?? 请大家帮忙看一下 谢谢分数没有了

解决方案 »

  1.   

    for(Student s:set1){
        System.out.println("学生姓名:"+s.getName());
    }
    你每次都是取得iterator,然后是.next(),所以每次都是输出第一个的姓名.或者是
    Iterator<Student> it = set1.iterator();
    while(it.hasNext()){
          System.out.println(it.next().getName());
    }
      

  2.   

    for(Student s:set1){
    System.out.println("学生姓名:"+set1.iterator().next().getName());
    }
    这段代码的问题   修改方法参照一楼   迭代器和FOR循环不要乱用