我想知道这些之间是否存在差异:
ArrayList<Example> list = new ArrayList<Example>
Run Code Online (Sandbox Code Playgroud)
1-)
for(int i = 0; i < list.size(); i++) {
list.get(i).doSomething();
}
Run Code Online (Sandbox Code Playgroud)
2-)
for(Example example : list) {
example.doSomething();
}
Run Code Online (Sandbox Code Playgroud)
如果没有任何差异哪一个更常见或更有效?
Jar*_*lak 22
for (int i = 0; i < list.size(); i++) {
list.get(i).doSomething();
}
Run Code Online (Sandbox Code Playgroud)
RandomAccess列表中
有效LinkedList在循环的每次迭代中,get(i)将不得不迭代从head/tailto 开始的所有元素iList以后List#get(int)使用i = 0;而不是int i = 0;- 将引用循环之前声明的变量,循环之外可能的副作用>而不是<- 循环不会执行j++而不是i++- 无限循环.get(j)而不是.get(i)- 将始终获得相同的元素for (Example example : list) {
example.doSomething();
}
Run Code Online (Sandbox Code Playgroud)
ConcurrentModificationExceptionIterator特定于集合的
用途LinkedListCollection,但每Iterable因为Iterable#iterator()使用
List了Set-不改变所需的循环Iterablefor-each 循环赢得比分为3:2.
使用传统循环的唯一原因是: