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

  • 相关阅读:
    jQuery选择器大全(48个代码片段+21幅图演示)
    抽象和模型
    什么叫做精通,我来给大家解释一下
    设置浏览器固定大小的固定位置的方法
    selenium对浏览器属性操作的方法
    selenium 最大化浏览器是解决浏览器和驱动不匹配的方法如下
    java selenium手动最大化chrome浏览器的方法
    java selenium启动火狐浏览器报错:Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: VISTA Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12-01T19:05:14.666Z
    mygenerator().next() AttributeError: 'generator' object has no attribute 'next'
    马的遍历 搜索
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/9014811.html
Copyright © 2020-2023  润新知