第一步:首先创建三个HashMap集合。
以学校制度为案例(学校 - 班级 - 学生):
HashMap<Student,String> hm1 = new HashMap<>(); //班级1;
hm1.put(new Student("xxx",x),"xxx"); //班级1中的学生;
HashMap<Student,String> hm2 = new HashMap<>();//班级2;
hm2.put(new Student("xxx",x),"xxx");// 班级2中的学生;
HashMap<HashMap<Student,String>,String> hm = new HashMap<>();//学校;
hm.put(hm1,"xxx"); //学校中的班级1;
hm.put(hm2,"xxx");//学校中的班级2;
第二步:通过双层嵌套增强for循环,将集合中的信息迭代出来。
for(HashMap<Student,String> newHm : hm.keyset() ){ //从学校中找出班级。
String newClass = hm.get(newHm); //通过key键,在hm集合中获取value值,value值是学校名字。
for(Student stu : newHm.keySet()){ //从班级中获取学生信息对象。
String newClass1 = newHm.get(stu);
System.out.println("姓名:"+stu.getName()+","+"年龄:"+stu.getAge()+","+"班级:"+newClass1+“学校:”+newClass);
}
}
详细代码如下:
Student.java
package com.demo.main;
public class Student {
private String name ;
private int age ;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
Main.java
package com.demo.main;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
//班级1
HashMap<Student,String> hm1 = new HashMap<>() ;
hm1.put(new Student("张三",13), "基础班1班");
hm1.put(new Student("李四",14), "基础班1班");
hm1.put(new Student("王五",15), "基础班1班") ;
hm1.put(new Student("赵六",16), "基础班1班");
//班级2
HashMap<Student,String> hm2 = new HashMap<>() ;
hm2.put(new Student("唐僧",1000),"基础班2班");
hm2.put(new Student("孙悟空",1001),"基础班2班");
hm2.put(new Student("猪八戒",1002),"基础班2班");
hm2.put(new Student("沙僧",1003),"基础班2班");
//学校
HashMap<HashMap<Student,String>,String> hm = new HashMap<>() ;
hm.put(hm1, "第88期基础班");
hm.put(hm2, "第99期基础班");
for (HashMap<Student,String> newhm : hm.keySet()){
//newhm 是 hm1,hm2 。
String class1 = hm.get(newhm);//获取的hm1和hm2的值。
for(Student stu : newhm.keySet()){
String class2 = newhm.get(stu);
System.out.println("学生名字:"+stu.getName()+" , "+"学生年龄:"+stu.getAge()+" , "+"班级:"+class2+" , "+"第几期:"+class1);
}
}
}
}
以上就是HashMap嵌套HashMap的简单案例。