HashMap最快遍历

两大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的,还是使用第二种。

纯属个人理解。

    原文作者:Stay_Li
    原文地址: https://www.jianshu.com/p/f6a60ef2861d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞