java学习笔记之嵌套map集合的两种遍历方法

前言

嵌套map集合的遍历方法仍是keySet与entrySet两种方法, 一 一为您介绍

案例

  //定义一个集合保存JavaEE学生的学号与名字
  //定义一个集合保存Ui的学号与名字
  //定义一个集合保存web的学号与名字
   Map<String, String> javaEE = new LinkedHashMap<String, String>();
        javaEE.put("001", "小明");
        javaEE.put("002", "小红");
        javaEE.put("003", "小绿");
        Map<String, String> uiStud = new LinkedHashMap<String, String>();
        uiStud.put("004", "张三");
        uiStud.put("005", "李四");
        uiStud.put("006", "王五");
        Map<String, String> webStud = new LinkedHashMap<String, String>();
        webStud.put("007", "二月红");
        webStud.put("008", "半截里");
        webStud.put("009", "吴老狗");
        //因为这是嵌套的map集合,student的泛型之一为Map
        Map<String, Map<String, String>> student = new LinkedHashMap<String, Map<String, String>>();
        student.put("JavaEE", javaEE);
        student.put("Ui", uiStud);
        student.put("Web", webStud);

使用keySet遍历集合

 //1.使用keySet遍历 返回的key值是set集合
        Set<String> subject=student.keySet();
 //2.使用迭代器
        Iterator<String> it=subject.iterator();
        while(it.hasNext()){
            String key=it.next();
            //根据key值返回的是map集合
            Map<String,String> stu=student.get(key);
            System.out.println(key+"  "+stu);
        }

使用entrySet遍历集合

  //3.使用entrySet  获取每一个(key,value)的集合
        Set<Map.Entry<String,Map<String,String>>> entrys=student.entrySet();
 //4.使用迭代器遍历entrys
        Iterator<Map.Entry<String,Map<String,String>>> it1=entrys.iterator();
        while (it1.hasNext()){
            //遍历的每一项的返回值是 Map.Entry>
            Map.Entry<String,Map<String,String>> stud=it1.next();
            //遍历出来的key值
            String key=stud.getKey();
            //遍历出来的value值,返回的是Map集合
            Map<String,String> vale=stud.getValue();
            //遍历各个学科的集合,遍历出来学号姓名
            Set<String> studen=vale.keySet();
            for (String va:studen) {
                System.out.println("学科="+key+"学号"+va+"姓名"+vale.get(va));
            }
        }

keySey遍历与entrySet遍历比较

//建立一个map集合
       HashMap<String,String> map1=new HashMap<String, String>();
        for (int i = 0; i <10000000 ; i++) {
            map1.put("001"+i,"sd");
        }
        //1.使用keyset遍历
        long start= System.currentTimeMillis();
        Set<String> getKey=map1.keySet();
        Iterator<String> it=getKey.iterator();
        while (it.hasNext())
        {
            String value=map1.get(it.next());
        }
        System.out.println("使用keyset遍历花费"+(System.currentTimeMillis()-start));
        //2.使用entrySet遍历
        long start1= System.currentTimeMillis();
        Set<Map.Entry<String,String>> entry=map1.entrySet();
        Iterator<Map.Entry<String,String>> it1=entry.iterator();
        while (it1.hasNext())
        {
            Map.Entry<String,String> map2=it1.next();
            String key=map2.getKey();
            String value=map2.getValue();
        }
        System.out.println("使用entrySet遍历花费"+(System.currentTimeMillis()-start1));

在这里输出了两种遍历方法的耗时
在这里插入图片描述

总结

  • keySet遍历方式:将所有的key值获取,再根据key值获取value值
  • entrySet遍历方法:遍历Map集合中每一项,使用getkey()获取key值,getvalue()获取value值
  • 两者经过比较,entrySet的遍历性能比keySet好,所以遍历Map集合多使用entry

你可能感兴趣的:(java学习笔记之嵌套map集合的两种遍历方法)