A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

第3章 Map集合的嵌套

1.1 Map中嵌套Map
1.1.1 案例代码十一
[AppleScript] 纯文本查看 复制代码
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 + "]";
}
}

[AppleScript] 纯文本查看 复制代码
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 案例代码十二
[AppleScript] 纯文本查看 复制代码
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);
}
}
}
}
  
更多
第一天
传智播客·黑马程序员郑州校区地址
河南省郑州市 高新区长椿路11号大学科技园(西区)东门8号楼三层
联系电话 0371-56061160/61/62
来校路线  地铁一号线梧桐街站A口出

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马