增强的 for 语句如何为数组工作,以及如何获取数组的迭代器?
给定以下代码片段:
int[] arr = {1, 2, 3};
for (int i : arr)
System.out.println(i);
我有以下问题:
- 上述 for-each 循环如何工作?
- 如何在Java中获取数组的迭代器?
- 数组是否转换为列表以获取迭代器?
给定以下代码片段:
int[] arr = {1, 2, 3};
for (int i : arr)
System.out.println(i);
我有以下问题:
如果想要一个 over a array,可以使用其中一个直接实现,而不是将数组包装在 .例如:Iterator
List
Apache Commons Collections ArrayIterator
或者,如果你想使用泛型,这个:
com.Ostermiller.util.ArrayIterator
请注意,如果要具有 over 基元类型,则不能,因为基元类型不能是泛型参数。例如,如果你想要一个,你必须使用一个来代替,这将导致大量的自动装箱和 -unboxing,如果它是由 .Iterator
Iterator<int>
Iterator<Integer>
int[]
不,没有转换。JVM 只是在后台使用索引循环访问数组。
引自 Effective Java 2nd Ed., Item 46:
请注意,使用 for-each 循环不会降低性能,即使对于数组也是如此。实际上,在某些情况下,与普通的 for 循环相比,它可能会提供轻微的性能优势,因为它只计算数组索引的限制一次。
因此,您无法获得数组的 a(当然,除非将其转换为第一个数组)。Iterator
List