说增强的for循环更有效是有点过于简单了。它 可以 是,但在许多情况下,这几乎是完全一样的一个老派的循环。
首先要注意的是,对于集合,增强的for循环使用
Iterator,因此,如果您使用手动遍历集合,
Iterator则性能应该与增强的for循环大致相同。
增强的for循环比 天真的实现的 传统循环快的地方是这样的:
linkedList<Object> list = ...;// Loop 1:int size = list.size();for (int i = 0; i<size; i++) { Object o = list.get(i); /// do stuff}// Loop 2:for (Object o : list) { // do stuff}// Loop 3:Iterator<Object> it = list.iterator();while (it.hasNext()) { Object o = it.next(); // do stuff}在这种情况下,循环1会比循环2和循环3都慢,因为在每次迭代中必须(部分地)遍历列表才能找到position处的元素
i。但是,由于使用,循环2和3只会在列表中再移一个元素
Iterator。循环2和循环3的性能也几乎相同,因为循环3与在循环2中编写代码时编译器将产生的结果几乎完全相同。



