集合框架(HashMap嵌套HashMap案例-----HashMap集合嵌套ArrayList集合案例----ArrayList嵌套HashMap集合案例-----HashMap和ArrayList多层嵌套)

 

/*
* 1:Hashtable和HashMap的区别?
* Hashtable:线程安全,效率低。不允许null键和null值
* HashMap:线程不安全,效率高。允许null键和null值
*
* 2:List,Set,Map等接口是否都继承子Map接口?
* List,Set不是继承自Map接口,它们继承自Collection接口
* Map接口本身就是一个顶层接口
*/

 

package cn.itcast_07;

import java.util.Hashtable;

/*
 * 1:Hashtable和HashMap的区别?
 * Hashtable:线程安全,效率低。不允许null键和null值
 * HashMap:线程不安全,效率高。允许null键和null值
 * 
 * 2:List,Set,Map等接口是否都继承子Map接口?
 * List,Set不是继承自Map接口,它们继承自Collection接口
 * Map接口本身就是一个顶层接口
 */
public class HashtableDemo {
    public static void main(String[] args) {
        // HashMap<String, String> hm = new HashMap<String, String>();
        Hashtable<String, String> hm = new Hashtable<String, String>();

        hm.put("it001", "hello");
        // hm.put(null, "world"); //NullPointerException
        // hm.put("java", null); // NullPointerException

        System.out.println(hm);
    }

 

 

 

 

 

 

 

 

 

HashMap输出顺序就是存储的顺序

 HashMap嵌套HashMap案例

package Day18;

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

//HashMap嵌套
/*
* czbk--集合
*     jc(键)---集合
*                  键   键值
*       (键值)      刘备  22
*                  曹操  23
*
*
*     jy键---集合
*       键值       键    键值
*                  孙权  24
*                  司马徽 25
* */
public class Map9 {
    public static void main(String[] args) {
        //首先创建czbkHashMap集合
        HashMap<String,HashMap<String,Integer>> czbk = new HashMap<String,HashMap<String, Integer>>();
        //创建jc集合对象
        HashMap<String,Integer> jc = new HashMap<String,Integer>();
        //首先给jc集合添加键值对对象
        jc.put("刘备",22);
        jc.put("曹操",23);
        //此时的jc集合的内的键值对对象创建完毕
        //此时将jc作为键jc集合的内容作为值--添加到czbk集合中
        czbk.put("jc",jc);

        //创建jy集合对象
        HashMap<String,Integer> jy = new HashMap<String,Integer>();
        //向jy(就业)集合中添加键值对对象
        jy.put("孙权",23);
        jy.put("司马徽",24);
        //此时的jy集合的键值对已经添加完毕
        //将jy作为键jy键值对对象作为键值--添加到czbk集合中
        czbk.put("jy",jy);

        //此时的czbk集合中已经有了连个键和对应的键值--此时输出遍历这两个键
        //首先创建czbk集合的键集合
        Set<String> czbkset = czbk.keySet();
        //遍历czbk集合中的键
        for(String czbkkey: czbkset){
            //利用键来获取对应的键值
            //输出查看集合中的键
            System.out.println(czbkkey);

            HashMap<String,Integer> jcmap = czbk.get(czbkkey);
            //我们发现键值中还有键值对对象---其中的键是String类型键值是Integer类型
            //再次定义一个键集合
            Set<String> jcset = jcmap.keySet();
              //遍历键集合来获取每个键
            for(String jckey:jcset){
                //遍历的键来获取每个键值
                Integer jcvalue = jcmap.get(jckey);
                //然后输出查看
                System.out.println("\t"+jckey+"--"+jcvalue);
            }

        }

    }
}

 HashMap集合嵌套ArryList集合案例

package Day18;

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

/*
 * HashMap集合嵌套ArrayList
 * 每一个ArrayList集合都是字符串类型
 * 元素为
 *       三国演义
 *             诸葛亮
 *             司马懿
 *      西游记
 *             孙悟空
 *             唐僧
 *      水浒传
 *             武松
 *             宋江
 * */
public class Map10 {
    public static void main(String[] args) {
        //创建HashMap集合
        HashMap<String, ArrayList<String>> SM = new HashMap<String, ArrayList<String>>();
        //创建ArrayList集合
        ArrayList<String>  A = new ArrayList<String>();
        //将字符元素添加到集合中
        A.add("诸葛亮");
        A.add("司马懿");
        SM.put("三国演义",A);

        //创建ArrayList集合
        ArrayList<String> B= new ArrayList<String>();
        //将字符元素添加到集合中
        B.add("孙悟空");
        B.add("唐僧");
        SM.put("西游记",B);

        //创建ArrayList集合
        ArrayList<String> C= new ArrayList<String>();
        //将字符元素添加到集合中
        C.add("武松");
        C.add("宋江");
        SM.put("水浒传",C);

        //对HashMap进行遍历输出
        //创建键的集合
        Set<String>  set = SM.keySet();
        //遍历键
        for(String e: set){
            //输出键
            System.out.println(e);
            //利用遍历的键来获取键值---键值的类型是ArrayList
            ArrayList<String> MM = SM.get(e);
            //对ArrayList进行遍历---输出其键值内容
            for(String K : MM){
            System.out.println("\t"+K);
            }
        }
    }
}

ArryLis集合嵌套HashMap集合案例

 

package Day18;
/*
* ArrayList嵌套HashMap集合并遍历
*
* */

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

public class Map11 {
    public static void main(String[] args) {
          //首先创建一个ArrayList集合
        ArrayList<HashMap<String,String>> AA = new ArrayList<HashMap<String, String>>();
          //创建HashMap集合
        HashMap<String,String> SM =  new HashMap<String, String>();
        //向集合中添加键值对对象
        SM.put("周瑜","小乔");
        SM.put("吕布","貂蝉");
        //将HashMap的元素添加到ArrayList集合中
        AA.add(SM);

        HashMap<String,String> SM1 =  new HashMap<String, String>();
        //向集合中添加键值对对象
        SM1.put("郭靖","黄蓉");
        SM1.put("杨过","小龙女");
        //将HashMap的元素添加到ArrayList集合中
        AA.add(SM1);

        HashMap<String,String> SM2 =  new HashMap<String, String>();
        //向集合中添加键值对对象
        SM2.put("令狐冲","任盈盈");
        SM2.put("林平之","岳灵珊");
        //将HashMap的元素添加到ArrayList集合中
        AA.add(SM2);

        //对ArrayList集合进行遍历
        for(HashMap<String,String> e: AA){
            //对HashMap进行遍历
            //创建键集合
            Set<String> set = e.keySet();
            //根据键获取键值
            for(String key : set){
                String value = e.get(key);
                //进行输出查看
                System.out.println(key+"---"+value);
            }
        }

    }

}

 HashMap和ArrayList多层嵌套

学生类

 

package cn.itcast_06;

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

    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 cn.itcast_06;

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

/*
 * 为了更符合要求:
 *         这次的数据就看成是学生对象。
 * 
 * 传智播客
 *         bj    北京校区
 *             jc    基础班
 *                     林青霞        27
 *                     风清扬        30
 *             jy    就业班    
 *                     赵雅芝        28
 *                     武鑫        29
 *         sh    上海校区
 *             jc    基础班
 *                     郭美美        20
 *                     犀利哥        22
 *             jy    就业班    
 *                     罗玉凤        21
 *                     马征        23
 *         gz    广州校区
 *             jc    基础班
 *                     王力宏        30
 *                     李静磊        32
 *             jy    就业班    
 *                     郎朗        31
 *                     柳岩        33
 *         xa    西安校区
 *             jc    基础班
 *                     范冰冰        27
 *                     刘意        30
 *             jy    就业班    
 *                     李冰冰        28
 *                     张志豪        29
 */
public class HashMapDemo {
    public static void main(String[] args) {
        // 创建大集合
        HashMap<String, HashMap<String, ArrayList<Student>>> czbkMap = new HashMap<String, HashMap<String, ArrayList<Student>>>();

        // 北京校区数据
        HashMap<String, ArrayList<Student>> bjCzbkMap = new HashMap<String, ArrayList<Student>>();
        ArrayList<Student> array1 = new ArrayList<Student>();
        Student s1 = new Student("林青霞", 27);
        Student s2 = new Student("风清扬", 30);
        array1.add(s1);
        array1.add(s2);
        ArrayList<Student> array2 = new ArrayList<Student>();
        Student s3 = new Student("赵雅芝", 28);
        Student s4 = new Student("武鑫", 29);
        array2.add(s3);
        array2.add(s4);
        bjCzbkMap.put("基础班", array1);
        bjCzbkMap.put("就业班", array2);
        czbkMap.put("北京校区", bjCzbkMap);

        // 晚上可以自己练习一下
        // 上海校区数据自己做
        // 广州校区数据自己做

        // 西安校区数据
        HashMap<String, ArrayList<Student>> xaCzbkMap = new HashMap<String, ArrayList<Student>>();
        ArrayList<Student> array3 = new ArrayList<Student>();
        Student s5 = new Student("范冰冰", 27);
        Student s6 = new Student("刘意", 30);
        array3.add(s5);
        array3.add(s6);
        ArrayList<Student> array4 = new ArrayList<Student>();
        Student s7 = new Student("李冰冰", 28);
        Student s8 = new Student("张志豪", 29);
        array4.add(s7);
        array4.add(s8);
        xaCzbkMap.put("基础班", array3);
        xaCzbkMap.put("就业班", array4);
        czbkMap.put("西安校区", xaCzbkMap);

        // 遍历集合
        Set<String> czbkMapSet = czbkMap.keySet();
        for (String czbkMapKey : czbkMapSet) {
            System.out.println(czbkMapKey);
            HashMap<String, ArrayList<Student>> czbkMapValue = czbkMap
                    .get(czbkMapKey);
            Set<String> czbkMapValueSet = czbkMapValue.keySet();
            for (String czbkMapValueKey : czbkMapValueSet) {
                System.out.println("\t" + czbkMapValueKey);
                ArrayList<Student> czbkMapValueValue = czbkMapValue
                        .get(czbkMapValueKey);
                for (Student s : czbkMapValueValue) {
                    System.out.println("\t\t" + s.getName() + "---"
                            + s.getAge());
                }
            }
        }
    }
}

 

posted @ 2022-03-28 22:52  ztgzqn  阅读(184)  评论(0)    收藏  举报