黑马程序员技术交流社区

标题: java MAP中遍历速度最优解 [打印本页]

作者: 刘雷冲    时间: 2012-3-9 20:15
标题: java MAP中遍历速度最优解
MAP中用Iterator来遍历时,用EntrySet()的效率应该是优于KeySet()的,不知原因,愿请教!
作者: 泮和顺    时间: 2012-3-9 20:31
...Map有Iterator吗 你的意思是map.keySet()方法然后用Iterator吧 用这个迭代器比较消耗资源吧
而entrySet() 直接可以用getkey() ;getValue();
作者: 乔玉吉    时间: 2012-3-10 00:23

keySet和entrySet在Map元素数较少时(小于10000)在查询速度上的区别不大,它们对于程序性能的影响可以忽略不计。但在元素较多时(大于100000)时entrySet的速度要明显快于keySet,尤其是TreeMap更明显。

这是因为keySet迭代后只能通过next方法返回key值,再取得key所对应的value时,此时还要访问Map的这个方法,这时,又多遍历了一次Map集合 ,也可以说是并发访问
而entrySet()方法迭代后,其next方法返回一个Entry对象的一个实例,其中包含key和value.

数据并发量不大的系统上entrySet()的优势并不明显.





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2