我读到增强的for循环比这里的正常for循环更有效:
当我搜索它们的效率之间的差异时,我发现的是:在正常for循环的情况下,我们需要额外的步骤来找出数组的长度或大小等,
for(Integer i : list){
....
}
int n = list.size();
for(int i=0; i < n; ++i){
....
}
但这是唯一的原因,增强的for循环优于正常的循环吗?在这种情况下,更好地使用normal for循环,因为理解增强的for循环有点复杂.
任何人都可以解释这两种for循环的内部实现,或解释使用增强型for循环的其他原因吗?
解决方法:
说增强的for循环更有效,这有点过于简单了.它可以,但在许多情况下,它几乎与老派循环完全相同.
首先要注意的是,对于集合,增强的for循环使用Iterator,因此如果您使用Iterator手动迭代集合,那么您应该具有与增强的for循环几乎相同的性能.
增强的for循环比一个天真实现的传统循环更快的地方是这样的:
LinkedList list = ...;
// Loop 1:
int size = list.size();
for (int i = 0; i
Object o = list.get(i);
/// do stuff
}
// Loop 2:
for (Object o : list) {
// do stuff
}
// Loop 3:
Iterator it = list.iterator();
while (it.hasNext()) {
Object o = it.next();
// do stuff
}
在这种情况下,循环1将比循环2和循环3都慢,因为它将在每次迭代中(部分地)遍历列表以找到位置i处的元素.然而,由于使用迭代器,循环2和3将仅在列表中进一步步骤一个元素.循环2和3也具有几乎相同的性能,因为循环3几乎就是编译器在循环2中编写代码时将产生的内容.
标签:java,for-loop,foreach
来源: https://codeday.me/bug/20190926/1821089.html