我不明白在Java中如何使用for each循环遍历数组。我的理解是,for each循环可以遍历实现了Iterable接口的任何类,但是Java中的数组并没有实现Iterable接口,那么如何可能在数组上使用for each循环呢?
for(:)
结构的右侧是一个数组而不是一个 Iterable 对象,那么内部代码将使用 int 索引计数器,并检查其是否小于数组的长度(array.length
),因此它可以用来循环遍历数组。有关详细信息,请参见 Java 语言规范。这是链接:https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.14.2。Integer arr[] = { 1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(arr);
// or
Iterable<Integer> iterable = Arrays.asList(arr);
for (I #i = Expression.iterator(); #i.hasNext(); ) {
{VariableModifier} TargetType Identifier =
(TargetType) #i.next();
Statement
}
Expression
必须具有数组类型,即 T[]
。T[] #a = Expression;
L1: L2: ... Lm:
for (int #i = 0; #i < #a.length; #i++) {
{VariableModifier} TargetType Identifier = #a[#i];
Statement
}
Map
)都扩展了Collection
接口,而Collection
接口又扩展了Iterable
接口。因此,在for-each
循环中使用除数组之外的数据结构选项并不多。 - Plabon Dutta