从这篇文章来看,
手写计数循环快约3倍
比增强的for循环迭代arraylists.
首先,"手写计数循环"是什么意思?他们没有明确说明这意味着什么.其次,为什么这只适用于arraylists而不是其他收藏?
首先,"手写计数循环"是什么意思?
我认为他们的意思
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)
这个问题的所有答案(在我撰写本文时,共有三个答案)都是错误的。
对于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也推荐这种模式。