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级别

  • 相关阅读:
    关于导出数据库提示 outfile disabled的解决方案
    mysql的日志管理
    Node.js aitaotu图片批量下载Node.js爬虫1.00版
    Node.js umei图片批量下载Node.js爬虫1.00
    Node.js abaike图片批量下载Node.js爬虫1.01版
    JS 数字左补零函数
    Node.js 向一个文件添加内容
    JS 取得当前日期时间(文本形式)
    Node.js abaike图片批量下载Node.js爬虫1.00版
    Node.js nvshens图片批量下载爬虫 1.00
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/9014811.html
Copyright © 2011-2022 走看看