说增强for循环更有效率有点过分简单。它可以是,但在许多情况下,它几乎完全一样的老校园循环。
首先需要注意的是,对于集合,增强的for循环使用了一个迭代器,所以如果你使用迭代器手动迭代一个集合,那么你应该具有与增强的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,由于使用了Iterator,所以列表中只会进一步增加一个元素。循环2和3也将具有相同的性能,因为循环3几乎完全是编写器在循环2中编写代码时将产生的。