1.1 Map中嵌套Map 1.1.1 案例代码十一

package com.itheima_03;
  
public class Student {
private String num;
private String name;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String num, String name) {
super();
this.num = num;
this.name = name;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student [num=" + num + ", name=" + name + "]";
}
}


package com.itheima_03;
  
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
  
/*
 * itheima:基础班,就业班
基础班:01 zhangsan;02 lisi
就业班:01 wangwu;02 zhaoliu

分析: 我们需要有班级和学生,班级和学生之间是一种对应关系(映射关系), 由于有对应关系,所以我们可以使用Map集合来存储这样的数据, 可以使用班级作为key,学生作为value, Map中的key只能对应一个value,但是我们一个班级中有多个学生, 我们可以创建一个包含多个学生的集合,让班级和这个集合产生一一对应的关系, 学生信息分为学号和姓名,这也是一种对应关系,所以我们使用Map集合来存储学生信息 学校Map 基础班 基础班学生Map 就业班 就业班学生Map Map嵌套Map

  
 *
 */
public class MapTest {
public static void main(String[] args) {
//学校Map
Map<String,Map<String,String>> itheima = new HashMap<String,Map<String,String>>();
//基础班学生Map
Map<String,String> base = new HashMap<String,String>();
base.put("01", "zhangsan");
base.put("02", "lisi");
//就业班学生Map
Map<String,String> job = new HashMap<String,String>();
job.put("01", "wangwu");
job.put("02", "zhaoliu");
//把包含了学生的Map添加到学校Map中
itheima.put("基础班", base);
itheima.put("就业班", job);
//遍历学校Map,查看有多少个班级和对应的学生
//先获取所有的班级
Set<String> keys =itheima.keySet();
for (String key : keys) {
//输出班级名称
System.out.println("班级名称:" + key);
//根据班级获取对应的所有学生
Map<String,String> stus = itheima.get(key);
//获取所有学生的学号
Set<String> nums = stus.keySet();
for (String num : nums) {
//根据学号获取学生姓名
String name = stus.get(num);
System.out.println("学号:" + num + ",姓名:" + name);
}
}
}
}

1.1.2 案例代码十二

package com.itheima_03;
  
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
  
/*
 * itheima:基础班,就业班
基础班:01 zhangsan;02 lisi
就业班:01 wangwu;02 zhaoliu
更为面向对象
学校Map
基础班        基础班学生List
就业班        就业班学生List
Map嵌套Collection
 */
public class MapTest2 {
public static void main(String[] args) {
//学校Map
Map<String,List<Student>> itheima = new HashMap<String,List<Student>>();
//基础班学生List
List<Student> base = new ArrayList<Student>();
base.add(new Student("01","zhangsan"));
base.add(new Student("02","lisi"));
//就业班学生List
List<Student> job = new ArrayList<Student>();
job.add(new Student("01","wangwu"));
job.add(new Student("02","zhaoliu"));
//把包含了学生对象的List添加到学校Map中
itheima.put("基础班", base);
itheima.put("就业班", job);
//遍历学校Map,查看有多少班级和对应的学生
//获取所有Entry对象
Set<Map.Entry<String,List<Student>>> entrys = itheima.entrySet();
for (Map.Entry<String, List<Student>> entry : entrys) {
//获取班级
String key = entry.getKey();
System.out.println("班级名称:" + key);
//获取包含了学生对象List
List<Student> value = entry.getValue();
for (Student student : value) {
System.out.println(student);
}
}
}
}