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

纯属个人理解。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java集合类可用于存储数量不等的对象,并可以实现常用的数据结构如栈,队列等,Java集合还可以用于保存具有映射关...
    小徐andorid阅读 5,948评论 0 13
  • 1. Map的四种遍历方式 下面只是简单介绍各种遍历示例(以HashMap为例),各自优劣会在本文后面进行分析给出...
    陈煦缘阅读 4,365评论 0 0
  • 自定义泛型 1.1、泛型的定义介绍 在集合中,不管是接口还是类,它们在定义的时候类或接口名的后面都使用<标识符>,...
    Villain丶Cc阅读 12,859评论 0 7
  • 墨记·日歌(壹佰壹拾贰·2018.8.22) 爱之殇:黑色幕布 1 你是一块巨大的幕布,我的舞台等待着你开启或降落...
    湖北叶潇阅读 3,060评论 1 2
  • 要知道,适当地咳嗽对人体是有益的,一天不超过10次的干咳,可以不用处理。 我们整理了咳嗽化痰的攻略,一定要鉴别是何...
    想你是件很美的事阅读 786评论 0 0