日期:2014-05-20  浏览次数:20748 次

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

------解决方案--------------------
通过下面的检测,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));
}
}
------解决方案--------------------
引用楼主 hallyhfk 的帖子:
一个使用for(int i=0;i <list.size();i++)
另一个使用 迭代器 Iterator iterator=list.iterator;
where(iterator.hasNext()){
classb=iterator.next;}
哪个效率更高一些,还是无所谓?