zoukankan      html  css  js  c++  java
  • HashMap中推荐使用entrySet方式遍历Map类集合KV而不是keySet方式遍历

    我们先来做一个测试

    public class HashMapTest {
        private HashMap<String, String> map = new HashMap<>();
    
        @Before
        public void beforeAllMethodTestInClass() {
            for (int i = 0; i < 100000; i++) {
                map.put("a" + i, "aa" + i);
                map.put("b" + i, "bb" + i);
                map.put("c" + i, "cc" + i);
                map.put("d" + i, "dd" + i);
            }
        }
    
        @Test
        public void entrySetTest() {
            Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
    
            long startTime = System.currentTimeMillis();
            while (it.hasNext()) {
                Map.Entry<String, String> entry = it.next();
                System.out.println(entry.getKey() + "=" + entry.getValue());
            }
            long endTime = System.currentTimeMillis();
            System.out.println(endTime - startTime);
        }
    
        @Test
        public void keySetTest() {
            Iterator<String> it = map.keySet().iterator();
    
            long startTime = System.currentTimeMillis();
            while (it.hasNext()) {
                String key = it.next();
                System.out.println(key + "=" + map.get(key));
            }
            long endTime = System.currentTimeMillis();
            System.out.println(endTime - startTime);
        }
    
    }
    多次测试,我们可以发现方法keySetTest()时间大约为2s809ms,
    entrySetTest()只有2s98ms,从测试上来说,后者运行时间小于前者。


    原来,因为entrySet遍历的时候,存放的是Map.Entry<T, T>类型,
    意思是,在进行遍历的时候已经把key、value放入其中。
    而keySet遍历的时候,存放的是T类型,
    意思是,在进行遍历的时候只放了key值,
    倘若我还需要value,就还需要使用 public V get(Object key) 方法

    注:本博客旨在记录,不作任何商用,如有侵犯,请联系博主(1258971228@qq.com)删除!

  • 相关阅读:
    临时文件服务器,配置共享文件夹
    封装扩展方法
    List.Insert
    VS 生成事件中xcopy失败
    创建型设计模式总结
    js提交图片转换为base64
    C#建造者模式
    echarts 立体柱
    k8s生产环境启用防火墙,要开启的端口
    一篇文章为你图解Kubernetes网络通信原理
  • 原文地址:https://www.cnblogs.com/uzxin/p/11857450.html
Copyright © 2011-2022 走看看