A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘雷冲 中级黑马   /  2012-3-9 20:15  /  2093 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

MAP中用Iterator来遍历时,用EntrySet()的效率应该是优于KeySet()的,不知原因,愿请教!

2 个回复

倒序浏览
...Map有Iterator吗 你的意思是map.keySet()方法然后用Iterator吧 用这个迭代器比较消耗资源吧
而entrySet() 直接可以用getkey() ;getValue();
回复 使用道具 举报

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

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

数据并发量不大的系统上entrySet()的优势并不明显.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马