package cn.itcast.maptest;
/*
* Map集合中嵌套另一个Map集合 HashMap
*
* 数据结构:
* 传智播客 -- 容器,存储班级,存储基础班和就业班
* 基础班 -- 容器 学号和姓名
* 001 张三 键值对
* 002 李四
* 就业班
* 001 王五
* 002 赵六
*
* 传智播客 集合容器,存储的是班级容器
* 传智播客集合<String班级名字, 基础班或者就业班集合容器>
* 基础班集合<String,String>
*/
import java.util.*;
public class MapMapTest {
public static void main(String[] args) {
//创建基础班集合容器,键和值都是字符串,键是学号,值是姓名
HashMap<String,String> javase = new HashMap<String, String>();
//创建就业班集合容器,键和值都是字符串,键是学号,值是姓名
HashMap<String,String> javaee = new HashMap<String, String>();
//创建传智播客集合,键是班级名字,值是班级集合
HashMap<String,HashMap<String,String>> czbk =
new HashMap<String, HashMap<String,String>>();
//基础班集合,存储学号姓名
javase.put("001", "张三");
javase.put("002", "李四");
//就业班集合,存储学号姓名
javaee.put("001", "王五");
javaee.put("002", "赵六");
//班级集合,存储到传智播客集合
czbk.put("基础班", javase);
czbk.put("就业班", javaee);
//keySet(czbk);
entrySet(czbk);
}
public static void entrySet(HashMap<String,HashMap<String,String>> czbk){
//czbk集合方法entrySet,集合键值对关系对象Map.Entry存储到Set集合
Set<Map.Entry<String, HashMap<String,String>>> set = czbk.entrySet();
//迭代存储czbk集合的键值对关系对象的,Set集合
Iterator<Map.Entry<String, HashMap<String,String>>> it = set.iterator();
while(it.hasNext()){
//it.next取出是什么 czbk集合的键值对关系对象Map.Entry
Map.Entry<String, HashMap<String,String>> classEntry = it.next();
//通过键值对关系对象方法getKey getValue 分别获取键值对
//获取czbk集合中的键,班级的名字
String classNamekey = classEntry.getKey();
//值是HashMap集合,存储的是学号和姓名
HashMap<String,String> classMap = classEntry.getValue();
//集合classMap方法entrySet,将集合键值对关系对象Map.Entry存储到Set集合
Set<Map.Entry<String, String>> classSet = classMap.entrySet();
//迭代班级的Set集合
Iterator<Map.Entry<String, String>> classIt = classSet.iterator();
while(classIt.hasNext()){
//classIt.next获取出来的是,班级集合的键值对关系对象
Map.Entry<String, String> entry = classIt.next();
//班级集合键值对关系对象方法 getKey getValue获取键值对
//键是班级集合学号
String number = entry.getKey();
//值是班级集合姓名
String name = entry.getValue();
System.out.println(classNamekey+"..."+number+"..."+name);
}
}
}
public static void keySet(HashMap<String,HashMap<String,String>> czbk){
//使用czbk集合方法keySet,将大集合的键,存储到Set集合
Set<String> set = czbk.keySet();
//迭代Set集合
Iterator<String> it = set.iterator();
while(it.hasNext()){
//it.next获取出来的,大集合czbk的键
String classNamekey = it.next();
//使用集合czbk方法get通过键获取值,值是存储班级信息的集合
HashMap<String,String> classMap = czbk.get(classNamekey);
//集合classMap方法keySet 班级集合键存储到Set集合
Set<String> classSet = classMap.keySet();
Iterator<String> classIt = classSet.iterator();
while(classIt.hasNext()){
//next方法获取出的是班级集合中键,学号
String number = classIt.next();
//集合classMap方法get通过键获取值
String name = classMap.get(number);
System.out.println(classNamekey+"..."+number+"..."+name);
}
}
}
}
|
|