比较下面两个循环,哪个执行速度快,为什么? for (Iterator iterator = list.iterator(); iterator.hasNext();) {
Map mao = (HashMap) iterator.next();

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

解决方案 »

  1.   

    个人认为第二个快,使用Iterator进行迭代的时候,它会对迭代出的每一个对象进行锁定
      

  2.   

    能有多大区别 size()大都慢 小都快
      

  3.   

    foreach不见得快多少,再牛逼的方法和写法也是基于一些非常基本的写法,foreach相信也是,相信他也是对循环迭代的一些封装要是想真正明白哪个速度快,楼主可以去看看foreach和Iterator的源代码,这样的话,就一清二楚了
      

  4.   

    一样一样的,现在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
      

  5.   

    看看生产的java code bytes。