【发布时间】:2011-03-15 05:18:40
【问题描述】:
List<T> list = new ArrayList<T>();
1 种方法:
for(int i = list.length - 1; i >= 0; i--) {
System.out.println(list.get(i));
}
2方法:
for(T t : list) {
System.out.println(t);
}
3种方法:
Iterator<T> it = list.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
【问题讨论】:
-
“有效”是什么意思?您追求的是性能、可读性还是最佳实践?除非您知道存在问题,否则我肯定更喜欢优化简单性而不是性能。
-
int i = list.length - 1应该是int i = list.size() - 1。您的语法对于数组是正确的。 -
请注意,尝试以反向顺序访问数组可能比以正向顺序更慢。将递减与比较相结合的好处是节省了一条指令,但一段时间以来,仅寄存器指令非常便宜。硬件缓存和内存读取针对前向读取进行了优化。此外,Oracle HotSpot,可能还有其他的,没有针对反向迭代的等效优化,因为它们很少使用(并且使用它们作为优化尝试的程序几乎肯定有其他更大的问题)。
标签: java performance