for-each vs for vs while

Mic*_*aël 6 java for-loop while-loop

我想知道在ArrayList或各种List上实现"for-each"循环的最佳方法是什么.

以下哪项实施最好,为什么?或者有最好的方法吗?

谢谢您的帮助.


List values = new ArrayList();

values.add("one"); values.add("two"); values.add("three"); ...

//#0
for(String value : values) { ... }

//#1
for(int i = 0; i < values.size(); i++) { String value = values.get(i); ... }

//#2
for(Iterator it = values.iterator(); it.hasNext(); ) { String value = it.next(); ... }

//#3
Iterator it = values.iterator(); while (it.hasNext()) { String value = (String) it.next(); ... }

Gre*_*ill 20

#3有一个缺点,因为迭代器的it范围超出了循环的末尾.其他解决方案没有这个问题.

#2与#0完全相同,除了#0更具可读性且不易出错.

#1(可能)效率较低,因为它.size()每次都通过循环调用.

#0通常是最好的,因为:

  • 它是最短的
  • 它最不容易出错
  • 它是惯用的,易于其他人一目了然
  • 它由编译器有效实现
  • 它不会使用不必要的名称污染您的方法范围(在循环外)