原因在这里:
对ArrayList、Vector,内部实现是数组(连续存储的),支持快速的随机访问;对链表LinkedList,每次随机访问get(i)都要遍历整个链表。而这两种实现可以用RandomAccess来区分。
所以,对数组实现的List,用随机访问比用迭代访问快10%左右,应尽量用get(i)访问。对链表实现的List,get(i)很慢,应尽量用迭代来访问,如:
if (!(list instanceof RandomAccess))
{
Iterator iter = list.iterator();
for (int i = 0, n = list.size(); i < n; i++)
{
o = iter.next();
}
}