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

  • 相关阅读:
    备忘录方法与动态规划比较
    struct大小
    位域
    cocos2d-x获得系统的语言
    游戏中的心理学:利用归因错误让玩家更爱你的游戏
    武侠游戏核心追求点
    将“Cocos2dx-截屏并设置图片尺寸 ”中cocos2d-x代码转换为2.2的代码
    Cocos2dx-截屏并设置图片尺寸
    信息图:iOS 7开发者需要知道的事
    批处理学习 二
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/9014811.html
Copyright © 2020-2023  润新知