zoukankan      html  css  js  c++  java
  • 【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式 + map的几种迭代方式

    参考链接:https://www.cnblogs.com/crazyacking/p/5573528.html

     ==================================

    java紫色代表迭代方式

    效率测试:100W 

    ==================================

     HashMap迭代方式1:entrySet迭代

    public static void main(String[] args) {
            Map<String,String>  hashMap = new HashMap<>();
            long beginTime = System.currentTimeMillis();
            System.out.println("hashMap存储开始时间-->"+beginTime);
            for (int i = 0; i < 1000000; i++) {
                hashMap.put(UUID.randomUUID().toString(),UUID.randomUUID().toString());
            }
            long endTime = System.currentTimeMillis();
            System.out.println("hashMap存储结束时间-->"+endTime);
            System.out.println("hashMap存储消耗:"+(endTime-beginTime)+"ms");
    
            System.out.println("hashMap【entrySet方式】读取开始时间-->"+endTime);
            //可以使用外部定义变量
            for (Map.Entry<String,String> entry :  hashMap.entrySet()){
                System.out.println(entry.getKey() + ":" + entry.getValue());
            }
            long endTime2 = System.currentTimeMillis();
            System.out.println("hashMap【entrySet方式】读取结束时间-->"+endTime2);
            System.out.println("hashMap【entrySet方式】读取消耗:"+(endTime2-endTime)+"ms");
        }

    ===================================================================

     HashMap迭代方式2:keySet迭代

    public static void main(String[] args) {
            Map<String,String>  hashMap = new HashMap<>();
            long beginTime = System.currentTimeMillis();
            System.out.println("hashMap存储开始时间-->"+beginTime);
            for (int i = 0; i < 1000000; i++) {
                hashMap.put(UUID.randomUUID().toString(),UUID.randomUUID().toString());
            }
            long endTime = System.currentTimeMillis();
            System.out.println("hashMap存储结束时间-->"+endTime);
            System.out.println("hashMap存储消耗:"+(endTime-beginTime)+"ms");
    
            System.out.println("hashMap【keySet方式】读取开始时间-->"+endTime);
            //可以使用外部定义变量
            Set<String> keySet = hashMap.keySet();
            for (String s : keySet) {
                System.out.println(s+":"+hashMap.get(s));
            }
            long endTime2 = System.currentTimeMillis();
            System.out.println("hashMap【keySet方式】读取结束时间-->"+endTime2);
            System.out.println("hashMap【keySet方式】读取消耗:"+(endTime2-endTime)+"ms");
        }

     =================================================================

    HashMap迭代方式3:forEach方式

    public static void main(String[] args) {
            Map<String,String>  hashMap = new HashMap<>();
            long beginTime = System.currentTimeMillis();
            System.out.println("hashMap存储开始时间-->"+beginTime);
            for (int i = 0; i < 1000000; i++) {
                hashMap.put(UUID.randomUUID().toString(),UUID.randomUUID().toString());
            }
            long endTime = System.currentTimeMillis();
            System.out.println("hashMap存储结束时间-->"+endTime);
            System.out.println("hashMap存储消耗:"+(endTime-beginTime)+"ms");
    
            System.out.println("hashMap【forEach方式】读取开始时间-->"+endTime);
            //不能使用外部定义变量 除非final类型 例如:List
            hashMap.forEach((k,v)->{
                System.out.println(k +":"+v);
            });
            long endTime2 = System.currentTimeMillis();
            System.out.println("hashMap【forEach方式】读取结束时间-->"+endTime2);
            System.out.println("hashMap【forEach方式】读取消耗:"+(endTime2-endTime)+"ms");
        }

    ======================================================================================================= 

     TreeMap迭代:entrySet方式

    public static void main(String[] args) {
            Map<String,String>  hashMap = new TreeMap<>();
            long beginTime = System.currentTimeMillis();
            System.out.println("TreeMap存储开始时间-->"+beginTime);
            for (int i = 0; i < 1000000; i++) {
                hashMap.put(UUID.randomUUID().toString(),UUID.randomUUID().toString());
            }
            long endTime = System.currentTimeMillis();
            System.out.println("TreeMap存储结束时间-->"+endTime);
            System.out.println("TreeMap存储消耗:"+(endTime-beginTime)+"ms");
    
            System.out.println("TreeMap【entrySet方式】读取开始时间-->"+endTime);
            //可以使用外部定义变量
            for (Map.Entry<String,String> entry :  hashMap.entrySet()){
                System.out.println(entry.getKey() + ":" + entry.getValue());
            }
            long endTime2 = System.currentTimeMillis();
            System.out.println("TreeMap【entrySet方式】读取结束时间-->"+endTime2);
            System.out.println("TreeMap【entrySet方式】读取消耗:"+(endTime2-endTime)+"ms");
        }
    View Code

    =================================================

    TreeMap迭代:keySet方式

    public static void main(String[] args) {
            Map<String,String>  hashMap = new TreeMap<>();
            long beginTime = System.currentTimeMillis();
            System.out.println("TreeMap存储开始时间-->"+beginTime);
            for (int i = 0; i < 1000000; i++) {
                hashMap.put(UUID.randomUUID().toString(),UUID.randomUUID().toString());
            }
            long endTime = System.currentTimeMillis();
            System.out.println("TreeMap存储结束时间-->"+endTime);
            System.out.println("TreeMap存储消耗:"+(endTime-beginTime)+"ms");
    
            System.out.println("TreeMap【keySet方式】读取开始时间-->"+endTime);
            //可以使用外部定义变量
            Set<String> keySet = hashMap.keySet();
            for (String s : keySet) {
                System.out.println(s+":"+hashMap.get(s));
            }
            long endTime2 = System.currentTimeMillis();
            System.out.println("TreeMap【keySet方式】读取结束时间-->"+endTime2);
            System.out.println("TreeMap【keySet方式】读取消耗:"+(endTime2-endTime)+"ms");
        }
    View Code

     

    ==========================================================

    TreeMap迭代:forEach方式

     public static void main(String[] args) {
            Map<String,String>  hashMap = new TreeMap<>();
            long beginTime = System.currentTimeMillis();
            System.out.println("TreeMap存储开始时间-->"+beginTime);
            for (int i = 0; i < 1000000; i++) {
                hashMap.put(UUID.randomUUID().toString(),UUID.randomUUID().toString());
            }
            long endTime = System.currentTimeMillis();
            System.out.println("TreeMap存储结束时间-->"+endTime);
            System.out.println("TreeMap存储消耗:"+(endTime-beginTime)+"ms");
    
            System.out.println("TreeMap【forEach方式】读取开始时间-->"+endTime);
            //不能使用外部定义变量 除非final类型 例如:List
            hashMap.forEach((k,v)->{
                System.out.println(k +":"+v);
            });
            long endTime2 = System.currentTimeMillis();
            System.out.println("TreeMap【forEach方式】读取结束时间-->"+endTime2);
            System.out.println("TreeMap【forEach方式】读取消耗:"+(endTime2-endTime)+"ms");
        }
    View Code

    =========================================================

    100W级别

    基本判断【并不准确】:HashMap存储效率高,读取效率也比较高

               TreeMap存储效率低,读取效率差不多

    =========================================================

     1000W级别

  • 相关阅读:
    springboot上传文件并检查图片大小与格式
    java判断传进来的是否是图片
    Spring boot设置文件上传大小限制
    Mybatis 中遍历map 参数中的 list 和 array 属性
    更优雅地关闭资源
    解决springboot druid 数据库批量更新错误问题
    EditPlus行首行尾批量添加字符 以及其它常用正则
    mybatis传入List实现批量更新的坑
    【libreoffice】libreoffice实现office转pdf、html、jpg等格式数据
    【tomcat】sessionId学习(未完待续)
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/9014811.html
Copyright © 2011-2022 走看看