ArrayList lst=new ArrayList();
lst.add("A");
lst.add("B");
lst.add("C");
Iterator it=lst.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
for(int i=0;i<lst.size();i++)
{
System.out.println(lst.get(i));
}
上面的程序中,用while跟用for的写法,出来的结果是一样的,但我很想知道两者有什么区别,我个人设想可能有效率上的问题,大家来说说。
lst.add("A");
lst.add("B");
lst.add("C");
Iterator it=lst.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
for(int i=0;i<lst.size();i++)
{
System.out.println(lst.get(i));
}
上面的程序中,用while跟用for的写法,出来的结果是一样的,但我很想知道两者有什么区别,我个人设想可能有效率上的问题,大家来说说。
对于LinkedList来说,第二种是一个非常浪费时间的操作,第一种好一些。
checkForComodification();
try {
Object next = get(cursor);
lastRet = cursor++;
return next;
} catch(IndexOutOfBoundsException e) {
checkForComodification();
throw new NoSuchElementException();
}
}
所以
对于ArrayList来说第二种性能会好一些,减少了不必要的检查
对于LinkedList来说,第二种是一个非常浪费时间的操作,第一种好一些。
一般没有实现RondomAccess的List,get(int i)方法采取的是搜索查找 i,相反的,则直接返回内部存储的一维数组对象(即:return elementData[i])
list.get(i);
runs faster than this loop: for (Iterator i=list.iterator(); i.hasNext(); )
i.next();路过,赶紧工作了..,LZ 保重.
while(it.hasNext())
{
System.out.println(it.next());
}
这个好