这里是Map集合嵌套Map集合
要求:
* 传智博客
* Java基础班
* 001 张三
* 002 李四
*
* Java就业班
* 001 王五
* 002 田七
分析:
001 张三 :键值对
* Java基础班:存储学号和姓名的键值对
* Java就业班:
* 传智博客:橱窗内存的是班级
*
* 基础班Map <学号,姓名>
* 传智博客Map <班级名字,基础班Map>
代码实现:
package itcast.demo5;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapMapDemo {
public static void main(String[] args) {
//定义基础班集合
HashMap<String,String> javase = new HashMap<String,String>();
//定义就业班集合
HashMap<String,String> javaee = new HashMap<String,String>();
javase.put("001", "张三");
javase.put("002", "李四");
javaee.put("001", "王五");
javaee.put("002", "田七");
//创建传智博客集合容器,键是班级名字,值是两个班级容器
HashMap<String,HashMap<String,String>> czbk = new
HashMap<String,HashMap<String,String>>();
czbk.put("Java基础班", javase);
czbk.put("Java就业班", javaee);
keySet(czbk);
entrySet(czbk);
}
public static void keySet(HashMap<String,HashMap<String,String>> czbk) {
//调用czbk集合方法keySet,将键存储到Set集合中
Set<String> classNameSet = czbk.keySet();
//迭代Set集合
Iterator<String> classNameIt = classNameSet.iterator();
while(classNameIt.hasNext()) {
//classNameIt.next()获取出来的是Set集合元素,czbk集合的键
String classNameKey = classNameIt.next();
//czbk集合的方法获取值,值是一个HashMap集合
HashMap<String,String> classMap = czbk.get(classNameKey);
//调用classMap集合方法keySet,键存储到Set集合
Set<String> studentNum = classMap.keySet();
Iterator<String> studentIt = studentNum.iterator();
while(studentIt.hasNext()) {
//studentIt.next()获取出来的是classMap的键:学号
String numKey = studentIt.next();
//调用classMap集合中的get方法获取值
String nameValue = classMap.get(numKey);
System.out.println(classNameKey+"..."+numKey+"..."+nameValue);
}
}
System.out.println("-----------------------------");
}
public static void entrySet(HashMap<String,HashMap<String,String>> czbk) {
//调用czbk集合方法entrySet方法,将czbk集合的键值对关系对象存储到Set集合中
Set<Map.Entry<String,HashMap<String,String>>> classNameSet = czbk.entrySet();
//迭代器迭代Set集合
Iterator<Map.Entry<String,HashMap<String,String>>> classNameIt = classNameSet.iterator();
while(classNameIt.hasNext()) {
//classNameIt.next()方法,取出的是czbk集合的键值对的关系对象
Map.Entry<String,HashMap<String,String>> classNameEntry = classNameIt.next();
//classNameEntry方法getKey,getValue
String classNameKey = classNameEntry.getKey();
//获取值,值是一个Map集合
HashMap<String,String> classMap = classNameEntry.getValue();
//调用班级集合classMap方法entrySet,键值对关系对象存储到Set集合
Set<Map.Entry<String,String>> studentSet = classMap.entrySet();
//迭代Set集合
Iterator<Map.Entry<String,String>> studentIt = studentSet.iterator();
while(studentIt.hasNext()) {
//studentIt.next()方法获取出的是班级集合的键值对关系对象
Map.Entry<String,String> studentEntry = studentIt.next();
//studentEntry方法 getKey 和 getValue
String numKey = studentEntry.getKey();
String nameValue = studentEntry.getValue();
System.out.println(classNameKey+"..."+numKey+"..."+nameValue);
}
}
}
}
运行结果:
Java就业班...001...王五
Java就业班...002...田七
Java基础班...001...张三
Java基础班...002...李四
-----------------------------
Java就业班...001...王五
Java就业班...002...田七
Java基础班...001...张三
Java基础班...002...李四