一个使用for(int i=0;i<list.size();i++)
另一个使用 迭代器 Iterator iterator=list.iterator;
                  where(iterator.hasNext()){
                   classb=iterator.next;}
哪个效率更高一些,还是无所谓?

解决方案 »

  1.   

    大体上差不多,
    都是对内部数组直接操作
    但后都可能要线程上的同步,
    一般人推荐后者,但我觉得前面一个应该也行,不过你要改变一下写法
    一个使用for(int i=0,sz = list.size();i <sz;i++) 
      

  2.   

    差不多  前一个要稍微快点。  估计hasNext()消耗了更多的时间。 
      

  3.   

    楼主先看下你写的
    迭代器 Iterator iterator=list.iterator; 
                      where(iterator.hasNext()){ 
                      classb=iterator.next;} 
    错误就有2个,
    where应该改为while
    list.iterator应该改为list.iterator();
      

  4.   

    通过下面的检测,2者没有明显的效率区别.
    但是数量级大的时候,用for也只是快了那么一点点.
    但这一点点基本上忽略不计拉.
    import java.util.ArrayList;
    import java.util.Iterator;public class TestList { public static void main(String[] args) {
    ArrayList list = new ArrayList();
    for (int i = 1; i <= 10000; i++) {
    list.add(i);
    }
    long time1 = System.currentTimeMillis();
    Iterator iterator = list.iterator();
    // 方法一
    /*
     * while (iterator.hasNext()) {
     * 
     * System.out.println(iterator.next()); }
     */
    // 方法二
    for (int j = 0, len = list.size(); j < len; j++) {
    System.out.println(list.get(j));
    }
    long time2 = System.currentTimeMillis();
    System.out.println("时间差是-------->" + (time2 - time1));
    }
    }
      

  5.   


    这里要看是什么list,
    如果是LinkedList这种没有声明为RandomAccess的List,必定是第二个方法快,相差十万八千里!如果是ArrayList这种声明为RandomAccess的List,则是第一种效率高,稍微比第二个快RandomAccess是为了标记这个List的实现类是否能够以一个接近固定速度来访问任意一个位置
      

  6.   

    楼上的有道理.
    ARRAYLIST是类似数组形式存储的, linkedlist大致类似链表类型
      

  7.   

    在插入数据的时候 LinkedList的速度要不ArrayList快  
    详细请看:
    http://blog.csdn.net/elimago/archive/2007/12/07/1921998.aspx