java中HashMap嵌套HashMap嵌套ArrayList案例

基础学生类

package itcast06;

public class Student {
    // 学生姓名
    private String name;
    // 学生年龄
    private int age;

    // 无参构造
    public Student() {
        super();
    }

    // 带参构造
    public Student(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }

    // getXxx() setXxx()方法
    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;
    }

}

实现嵌套类

package itcast06;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;

/**
 * HashMap嵌套HashMap嵌套ArrayList
 * 示例:
 * 中国 china
 * 
 *      安徽省ah
 *          安徽大学ahu
 *              法学      39
 *              计算机 76
 *          合肥工业大学hfut
 *              电子      12
 *              物理      69
 * 
 *      山东省sd
 *          山东大学sdu
 *              法学      73
 *              计算机 99
 *          济南大学 ujn
 *              电子      55
 *              物理      27
 * 
 *      江苏省js
 *          南京大学nju
 *              法学      36
 *              计算机 82
 *          东南大学seu
 *              电子      61
 *              物理      30
 * 
 * @author lgt
 *
 */
public class HashMapDemo {
    public static void main(String[] args) {
        // 创建大集合,使用HashMap,其中HashMap无序,而LinkedHashMap具有可以预知的迭代顺序
        HashMap<String, HashMap<String, ArrayList<Student>>> chMap = new HashMap<String, HashMap<String, ArrayList<Student>>>();

        // 安徽省ah数据
        // 创建省区集合
        HashMap<String, ArrayList<Student>> ahMap = new HashMap<String, ArrayList<Student>>();

        // 创建安徽大学学生集合
        ArrayList<Student> array1 = new ArrayList<Student>();
        // 创建安徽大学学生元素
        Student s1 = new Student("法学", 39);
        Student s2 = new Student("计算机", 76);
        // 添加学生元素到学生集合
        array1.add(s1);
        array1.add(s2);
        // 创建合肥工业大学学生集合
        ArrayList<Student> array2 = new ArrayList<Student>();

        // 创建合肥工业大学学生元素
        Student s3 = new Student("电子", 12);
        Student s4 = new Student("物理", 69);
        // 添加学生元素到学生集合
        array2.add(s3);
        array2.add(s4);

        // 添加学校学生键值对到省区集合
        ahMap.put("安徽大学", array1);
        ahMap.put("合肥工业大学", array2);

        // 添加省区学校键值对到国家集合
        chMap.put("安徽省", ahMap);

        // 山东省sd数据
        HashMap<String, ArrayList<Student>> sdMap = new HashMap<String, ArrayList<Student>>();
        // 创建山东大学学生集合
        ArrayList<Student> array3 = new ArrayList<Student>();
        // 创建山东大学学生元素
        Student s5 = new Student("法学", 73);
        Student s6 = new Student("计算机", 99);
        // 添加学生元素到学生集合
        array3.add(s5);
        array3.add(s6);

        // 创建济南大学学生集合
        ArrayList<Student> array4 = new ArrayList<Student>();
        // 创建济南大学学生元素
        Student s7 = new Student("电子", 55);
        Student s8 = new Student("物理", 27);
        // 添加学生元素到学生集合
        array4.add(s7);
        array4.add(s8);

        // 添加学校学生键值对到省区集合
        sdMap.put("山东大学", array3);
        sdMap.put("济南大学", array4);

        // 添加省区学校键值对到国家集合
        chMap.put("山东省", sdMap);

        // 江苏省js数据
        HashMap<String, ArrayList<Student>> jsMap = new HashMap<String, ArrayList<Student>>();
        // 创建南京大学学生集合
        ArrayList<Student> array5 = new ArrayList<Student>();
        // 创建南京大学学生元素
        Student s9 = new Student("法学", 36);
        Student s10 = new Student("计算机", 82);
        // 添加元素到学生集合
        array5.add(s9);
        array5.add(s10);

        // 创建东南大学学生集合
        ArrayList<Student> array6 = new ArrayList<Student>();
        // 创建东南大学学生元素
        Student s11 = new Student("电子", 61);
        Student s12 = new Student("物理", 30);
        // 添加元素到学生集合
        array6.add(s11);
        array6.add(s12);

        // 添加学校学生键值对到省区集合
        jsMap.put("南京大学", array5);
        jsMap.put("东南大学", array6);

        // 添加省区学校键值对到国家集合
        chMap.put("江苏省", jsMap);

        // 遍历集合
        System.out.println("中国");
        // 获取所有的键
        Set<String> chMapSet = chMap.keySet();
        // 遍历键的集合,获取每一个键
        for (String chMapKey : chMapSet) {
            System.out.println("\t" + chMapKey);
            // 根据键查找值
            HashMap<String, ArrayList<Student>> chMapValue = chMap.get(chMapKey);
            // 获取所有的键
            Set<String> chMapValueSet = chMapValue.keySet();
            // 遍历键的集合,获取每一个键
            for (String chMapValueKey : chMapValueSet) {
                // 根据键查找值
                System.out.println("\t\t" + chMapValueKey);
                ArrayList<Student> chMapValueValue = chMapValue.get(chMapValueKey);
                for (Student s : chMapValueValue) {
                    System.out.println("\t\t\t" + s.getName() + "---" + s.getAge());
                }
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值