2013-06-28 113 views
0

我从来没有见过这个 你可以解释我这是什么?这是什么语法:和代码在java中做什么?

for(Puzzle p:daughtersList) 
..... 
..... 

拼图是一个类和daughtersList是一个ArrayList

+2

替代方案,是一个[for-each循环(http://docs.oracle.com/javase/1.5。 0 /文档/导向/语言/ foreach.html)。 – rid

+0

[Enhanced For Loop](http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.14.2)。 –

+0

它列举了daughtersList中的所有Puzzle项目(就像C#中的foreach) –

回答

1

这就是所谓的"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,包括CollectionSet,并ArrayListCollection(因此一个Iterable)。

0

这只是编写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 
} 
0

其称为for-each循环

:右侧必须是Iterable一个实例(daughtersListArrayList基本上实现Iterable)此代码工作

for(Iterator i = daughtersList.iterator(); i.hasNext();) { 
    Puzzle p = (Puzzle) i.next(); 
    .... 
} 
0

for(Puzzle p:daughtersList)短形式是foreach循环。它遍历daugterlist的所有元素。在每次迭代p成立当前元素

它是一个类似的下面

for(int i = 0; i < daughterList.length(); i++) 
    // now use daughetList[i]