簡體   English   中英

形式為:“for (A b : c)”的for循環在Java中

[英]For loop in the form of : “for (A b : c)” in Java

這是我第一次看到這種語法:

// class Node
public class Node { 

...
...

}

public class Otherclass { ... }

Otherclass graph = new Otherclass();

// getSuccessors is a method of Otherclass class 

Node currentNode ;

List<Node> successors = graph.getSuccessors(currentNode);

// weird for loop 

for (Node son : successors) { 

// do something 

}

那個 for 循環是什么? 某種 Matlab 語法?

有沒有其他方法可以編寫 for 循環?

問候

這是一個for-each循環(也稱為enhanced-for 。)

for (type var : arr) { //could be used to iterate over array/Collections class
    body-of-loop
}

基本的 for 循環在 Java 5 中得到了擴展,以使對數組和其他集合的迭代更加方便。 這個較新的 for 語句稱為增強的 for 或 for-each

(文檔)

這是一個 for 每個循環。 你也可以這樣寫:

for(int i = 0; i < successors.size(); i++) {
    Node son = successors.get(i);
}

盡管我個人唯一一次這樣做是需要索引來執行除訪問元素之外的其他操作。

它是增強的 for 語句。 見第14.14.2 Java 語言規范的增強 for 語句

它被稱為Enhanced for-loop 它基本上通過按順序獲取每個元素來迭代 Collection。 所以你不需要訪問索引上的元素。

List<Integer> list = new ArrayList<Integer>();

for (int val: list) {
    System.out.println(val);  // Prints each value from list
}

請參閱§14.14.2 - Java 語言規范的增強 for 循環部分。

它的意思是“對於每個sonsuccessors ,其中的類型sonNode

這是您的 for 循環的一種表示

for(int i=0;i<successors.size();i++){

        Node myNode = successors.get(i);
    }

這不是 for 循環,但您仍然可以這樣做。

Iterator<Node> itr = successors.iterator();

    while(itr.hasNext()){
        Node myNode = itr.next();
        // your logic
    }

它被稱為增強的 for 循環,而不是使用迭代器來迭代一個集合,你可以簡單地使用這個 for 循環

使用迭代器

Iterator<String> i=a.iterator();

while(i.hasNext())
{
String s=i.next();
}

您可以簡單地使用增強的 for 循環。

for(String s : a)
{
 .. do something
}

所以它只是 Java 5 中引入的一個語法糖,它執行與迭代器相同的功能,並在內部使用迭代器。 該類應該實現 Iterator 接口以便使用這個 for 循環

class Node<T> implements Iterator<String>{

@Override
public boolean hasNext() {
    // TODO Auto-generated method stub
    return false;
}

@Override
public String next() {
    // TODO Auto-generated method stub
    return null;
}

@Override
public void remove() {
    // TODO Auto-generated method stub

}



}

在這種情況下,它是一個 for each 循環,它是這樣寫的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM