六、Map扩展知识 在很多项目中,应用比较多的是一对多的映射关系,这就可以通过嵌套的形式将多个映射定义到一个大的集合中,并将大的集合分级处理,形成一个体系。 如: [java] view plaincopy
- /*
- map扩展知识。
- map集合被使用是因为具备映射关系。
- 以下是班级对应学生,而学生中学号对应着姓名的映射关系:
- "yureban" Student("01" "zhangsan");
-
- "yureban" Student("02" "lisi");
-
- "jiuyeban" "01" "wangwu";
- "jiuyeban" "02" "zhaoliu";
-
- 就如同一个学校有多个教室。每一个教室都有名称。
- */
- import java.util.*;
-
- class MapExpandKnow
- {
- public static void main(String[] args)
- {
- //预热班集合
- HashMap<String,String> yureban=new HashMap<String,String>();
- //就业班集合
- HashMap<String,String> jiuyeban=new HashMap<String,String>();
- //学校集合
- HashMap<String,HashMap<String,String>> czbk=new HashMap<String,HashMap<String,String>>();
-
- //学校中班级集合和名称的映射
- czbk.put("yureban",yureban);
- czbk.put("jiuyueban",jiuyeban);
-
- //预热班级中学号与姓名的映射
- yureban.put("01","zhangsan");
- yureban.put("02","lisi");
-
- //就业班级中学号与姓名的映射
- jiuyeban.put("01","wangwu");
- jiuyeban.put("02","zhouqi");
-
- //直接显示全部学生信息
- getAllStudentInfo(czbk);
-
- }
- //定义一个方法获取全部学生信息,包括在哪个班级,叫什么名字,学号多少
- public static void getAllStudentInfo(HashMap<String ,HashMap<String,String>> hm)
- {
- for (Iterator<String> it=hm.keySet().iterator();it.hasNext() ; )//用keySet取出方式
- {
- String s= it.next();//班级名称
- System.out.println(s+":");
- HashMap<String,String> stu=hm.get(s);//班级集合
-
- getStudentInfo(stu);
- }
- }
-
- //获取班级中学生的信息,包括姓名和学号
- public static void getStudentInfo(HashMap<String,String> hm)
- {
- for (Iterator<String> it=hm.keySet().iterator();it.hasNext() ; )
- {
- String key=it.next();//学号
- String value=hm.get(key);//姓名
- System.out.println(key+"..."+value);
- }
- }
- }
|