我从来没有见过这个 你可以解释我这是什么?这是什么语法:和代码在java中做什么?
for(Puzzle p:daughtersList)
.....
.....
拼图是一个类和daughtersList是一个ArrayList
我从来没有见过这个 你可以解释我这是什么?这是什么语法:和代码在java中做什么?
for(Puzzle p:daughtersList)
.....
.....
拼图是一个类和daughtersList是一个ArrayList
这就是所谓的"for each" loop in Java,由于1.5这一直存在。
它循环遍历冒号右侧的Iterable
或数组的每个元素,并隐含Iterator
。
它等效于以下代码:
for (Iterator<Puzzle> i = daughtersList.iterator(); i.hasNext();) {
Puzzle p = i.next();
// .....
// .....
}
从上面链接Iterable
Javadoc中引用:
实现此接口允许一个对象是 “的foreach”语句的目标。
而且很多事情在Java中实现Iterable
,包括Collection
和Set
,并ArrayList
是Collection
(因此一个Iterable
)。
这只是编写for-loop的替代方法。它被称为“for-each”,因为它会遍历列表中的所有项目。一个例子是,每个“谜题”都有一个可通过getName()
方法访问的名称,并且您想要列出列表中所有拼图的名称。然后,你可以这样做:
for(Puzzle p : daugthersList){ // For each Puzzle p, in the list daughtersList
System.out.println(p.getName()); // Print the name of the puzzle
}
其称为for-each循环
的:
右侧必须是Iterable
一个实例(daughtersList
是ArrayList
基本上实现Iterable
)此代码工作
其
for(Iterator i = daughtersList.iterator(); i.hasNext();) {
Puzzle p = (Puzzle) i.next();
....
}
for(Puzzle p:daughtersList)
短形式是foreach
循环。它遍历daugterlist的所有元素。在每次迭代p成立当前元素
它是一个类似的下面
for(int i = 0; i < daughterList.length(); i++)
// now use daughetList[i]
替代方案,是一个[for-each循环(http://docs.oracle.com/javase/1.5。 0 /文档/导向/语言/ foreach.html)。 – rid
[Enhanced For Loop](http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.14.2)。 –
它列举了daughtersList中的所有Puzzle项目(就像C#中的foreach) –