第3章 Map集合的嵌套

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第3章 Map集合的嵌套相关的知识,希望对你有一定的参考价值。

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);
}
}
}
}

以上是关于第3章 Map集合的嵌套的主要内容,如果未能解决你的问题,请参考以下文章

第3章 Hive数据类型

编写高质量代码:改善Java程序的151个建议(第3章:类对象及方法___建议36~40)

201621123037 《Java程序设计》第9周学习总结

集合-Collection,Map待续

集合Map可变参数Collections

韩顺平循序渐进学Java零基础 第14章 集合