比较下面两个循环,哪个执行速度快,为什么?

selanglj1 2011-09-16 09:56:47
比较下面两个循环,哪个执行速度快,为什么?

for (Iterator iterator = list.iterator(); iterator.hasNext();) {
Map mao = (HashMap) iterator.next();

}
for (Object obj : list) {
Map map = (HashMap)obj;
}
...全文
237 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
healer_kx 2011-09-16
  • 打赏
  • 举报
回复
看看生产的java code bytes。
healer_kx 2011-09-16
  • 打赏
  • 举报
回复
真不知道。。。
wangfeiwoyun 2011-09-16
  • 打赏
  • 举报
回复
一样一样的,现在java的foreach只是个语法糖

for (Object obj : list) {
Map map = (HashMap)obj;
}

编译后就是:

for (Iterator iterator = list.iterator(); iterator.hasNext();) {
Map mao = (HashMap) iterator.next();
}


所以这就是为什么只有实现了iterable接口的Collection和或者数组才可以使用foreach
dinglimin2009 2011-09-16
  • 打赏
  • 举报
回复
foreach不见得快多少,再牛逼的方法和写法也是基于一些非常基本的写法,foreach相信也是,相信他也是对循环迭代的一些封装要是想真正明白哪个速度快,楼主可以去看看foreach和Iterator的源代码,这样的话,就一清二楚了
剑神一笑 2011-09-16
  • 打赏
  • 举报
回复
能有多大区别 size()大都慢 小都快
flyingZippo 2011-09-16
  • 打赏
  • 举报
回复
可能是第二个快   要测试 
wby13579 2011-09-16
  • 打赏
  • 举报
回复
iterator 吧,建议使用
夏天-滴風 2011-09-16
  • 打赏
  • 举报
回复
foreach吧
jerrygr_ok 2011-09-16
  • 打赏
  • 举报
回复
个人认为第二个快,使用Iterator进行迭代的时候,它会对迭代出的每一个对象进行锁定
softroad 2011-09-16
  • 打赏
  • 举报
回复
自己测下么,貌似是第一个快。
皮特张 2011-09-16
  • 打赏
  • 举报
回复
这个没注意过。呵呵
24K純帥 2011-09-16
  • 打赏
  • 举报
回复
不知道,感觉是Iterator快

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧