Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式存入或查看某个映射的内容,这里是一个题目,是Map的一个简单应用,通过理解希望能够帮到你哦- /*
- 题目:设某个学校有多个班级,班级中有多名学生,
- 试通过集合思想打印每个学生的信息(学号、姓名)
- 班级按1班,2班...顺序打印(不使用Collections)
- 分析:一个学校有多个班级,每个班级有多个学生,可以创建HashMap集合,
- 一次迭代取出班级信息,进而进行二次迭代,取出班级中的学生对象,
- 最后根据学生类提供的方法获取学号和姓名。
- 针对打印,可以设置班级比较器
- */
- import java.util.*;
- class Student//学生类
- {
- private String id;
- private String name;
- Student(String id,String name)
- {
- this.name = name;
- this.id = id;
- }
- public String getName()
- {
- return name;
- }
- public String getId()
- {
- return id;
- }
- }
- class SomeClass//教室类
- {
- private String className;
- SomeClass(String name)
- {
- this.className = name;
- }
- public String getName()
- {
- return className;
- }
- }
- class MapPromote
- {
- public static void main(String[] args)
- {
- //创建学校
- HashMap<SomeClass,List<Student>> hp = new HashMap<SomeClass,List<Student>>();
- List<Student> class1 = new ArrayList<Student>();//创建班级:一班,班级中的集合元素为学生
- class1.add(new Student("001","lisi01"));//往一班添加学生
- class1.add(new Student("002","lisi02"));
- class1.add(new Student("003","lisi03"));
- class1.add(new Student("004","lisi04"));
- hp.put(new SomeClass("6班"),class1);
- List<Student> class2 = new ArrayList<Student>();//创建班级:二班
- class2.add(new Student("005","wangwu05"));//往二班添加学生
- class2.add(new Student("006","wangwu06"));
- class2.add(new Student("007","wangwu07"));
- class2.add(new Student("008","wangwu08"));
- hp.put(new SomeClass("1班"),class2);
- Iterator<SomeClass> it = hp.keySet().iterator();//创建迭代器,遍历各班级
- while(it.hasNext())
- {
- SomeClass myclass = it.next();
- List<Student> stu = hp.get(myclass);//获得各班级的集合(即所有学生信息)
- Iterator<Student> iter = stu.iterator();//创建班级集合的迭代器
- //List集合直接使用iterator(),不含keySet()方法,无需进行集合转换
- while(iter.hasNext())
- {
- Student st = iter.next();//获取学生对象
- String id = st.getId();//获取学生学号
- String name = st.getName();//获取学生姓名
- System.out.println("班级:"+myclass.getName()+"--学号:"+id+"--姓名:"+name);//输出结果
- }
- }
- }
- }
复制代码 |