一个使用for(int i=0;i<list.size();i++)
另一个使用 迭代器 Iterator iterator=list.iterator;
where(iterator.hasNext()){
classb=iterator.next;}
哪个效率更高一些,还是无所谓?
另一个使用 迭代器 Iterator iterator=list.iterator;
where(iterator.hasNext()){
classb=iterator.next;}
哪个效率更高一些,还是无所谓?
都是对内部数组直接操作
但后都可能要线程上的同步,
一般人推荐后者,但我觉得前面一个应该也行,不过你要改变一下写法
一个使用for(int i=0,sz = list.size();i <sz;i++)
迭代器 Iterator iterator=list.iterator;
where(iterator.hasNext()){
classb=iterator.next;}
错误就有2个,
where应该改为while
list.iterator应该改为list.iterator();
但是数量级大的时候,用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));
}
}
这里要看是什么list,
如果是LinkedList这种没有声明为RandomAccess的List,必定是第二个方法快,相差十万八千里!如果是ArrayList这种声明为RandomAccess的List,则是第一种效率高,稍微比第二个快RandomAccess是为了标记这个List的实现类是否能够以一个接近固定速度来访问任意一个位置
ARRAYLIST是类似数组形式存储的, linkedlist大致类似链表类型
详细请看:
http://blog.csdn.net/elimago/archive/2007/12/07/1921998.aspx