使用ArrayLists优化for循环

Ock*_*zor 6 java arraylist

这篇文章来看,

手写计数循环快约3倍

比增强的for循环迭代arraylists.

首先,"手写计数循环"是什么意思?他们没有明确说明这意味着什么.其次,为什么这只适用于arraylists而不是其他收藏?

Pet*_*rey 7

首先,"手写计数循环"是什么意思?

我认为他们的意思

for(int i=0;i<list.size();i++) {
    list.get(i);
}
Run Code Online (Sandbox Code Playgroud)

其次,为什么这只适用于arraylists而不是其他收藏?

ArrayList支持高效的随机访问,删除Iterator可以做一些小的改进.(如果你有一个没有做任何事情的循环,那么相对改进很大)

对于其他集合,例如LinkedList,使用Iterator会更快,因为get(n)它更慢.对于Set,没有get(n)


Eri*_*vic 5

这个问题的所有答案(在我撰写本文时,共有三个答案)都是错误的。

对于Android,您不应该针对手写循环执行此操作!

for(int i=0;i<list.size();i++) {
    list.get(i);
}
Run Code Online (Sandbox Code Playgroud)

以上是错误的!

循环必须如下所示(大小被临时复制到其自己的变量中):

int size = list.size();
for(int i=0;i<size;i++) {
    list.get(i);
}
Run Code Online (Sandbox Code Playgroud)

否则,该循环的每次迭代都会有一个查询代价!如果您仔细阅读了该问题的链接文章,您会发现Google也推荐这种模式。