美文网首页Android开发
HashMap最快遍历

HashMap最快遍历

作者: Stay_Li | 来源:发表于2018-09-17 09:45 被阅读5次

    两大foreach方式

    目前测试的结果 foreach 与 显示调用 Iterator 的性能上几乎等价,因此只说明以下的两种方式。

    1. map.entrySet()
    Map<String, String> map = new HashMap<String, String>();
    for (Entry<String, String> entry : map.entrySet()) {
    entry.getKey();
    entry.getValue();
    }
    
    • 分析
      entrySet()返回的是set的迭代器 ,其返回的entry对象中包含了 key 和 value 当获取key 或这value的是时候,其实就是取其中的属性,因此性能是相对较高的。
    1. map.keySet()
    Map<String, String> map = new HashMap<String, String>();
    for (String key : map.keySet()) {
    map.get(key);
    }
    
    • 分析
      keySet() 返回的也是set的迭代器,但是其中只有key的集合内容,当需要获取value时,还需要主动调用 map.get(key),此时的迭代效率就相当的慢了,其效率的高低,get的时间复杂度根据hash算法而异。
    • 总结
      视需求来定, 需要key 和 value的值,还是使用第一种比较好,只需要key的,还是使用第二种。

    纯属个人理解。

    相关文章

      网友评论

        本文标题:HashMap最快遍历

        本文链接:https://www.haomeiwen.com/subject/uoahnftx.html