欢迎光临
我们一直在努力

Java遍历Map的几种方法

Map是比较常用的容器之一,工作中也经常用Map,Set,List等作为容器来存储对象或内容。那么存进去了如何取值呢?看看常用的几种取值方法:

结果

 

这四种方法都可以遍历map:

第一种是目前许多人最喜欢的一种方式,因为代码最少,看起来最简单,通过遍历keySet,再将key所对应的value查询出来,这里有一个二次取值的过程,所以并不推荐;

第二种和第三种原理是相同的,都是通过遍历Map.Entry的方式,将Entry中的key和value打印出来,第三种是比较推荐写法,因为采用jdk1.5后的遍历形式,代码看起来比较整洁;

第四种比较少用,因为我们大多数时候都是同时需要key和value的

综上所述,如果map里面内容比较少,其实采用哪种方式都可以,第一种和第三种相对简洁一些;但是一旦容量非常大时,更推荐采用第三种方式,相比于第一种将极大地节省性能。

修改一下代码,对执行时间执行一下测试

Map.entrySet:

 

(鄙人工作电脑有些渣。。。)可以看出,百万级别的量时,使用keySet和entrySet遍历,执行时间大概为1.5:1,这并不是最主要的差异。真正的差异还是必须看代码:

计算hashCode是CPU密集运算,非常耗费CPU资源,如果对一个比较大的map进行遍历,会出现CPU迅速飚高的现象,直接影响机器的响应速度,在多线程的情况下,简直就是一场灾难,而采用entrySet来进行遍历,则无此问题,对这个有兴趣的同学,可以使用自己的机器试一试。

 

未经允许不得转载:李阳博客 » Java遍历Map的几种方法

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址