4

この種の構文を見たのはこれが初めてです:

// 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ループを書く他の方法はありますか?

よろしく

4

8 に答える 8

9

これはfor-eachループです(。とも呼ばれenhanced-forます)。

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

基本的なforループがJava5で拡張され、配列やその他のコレクションの反復がより便利になりました。この新しいforステートメントは、enhancedforまたはfor-eachと呼ばれます

(ドキュメンテーション)

于 2012-11-22T15:42:44.173 に答える
6

これはforeachループです。次のように書くこともできます。

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

私が個人的に行うのは、要素にアクセスする以外のことを行うためにインデックスが必要な場合だけですが。

于 2012-11-22T15:43:23.860 に答える
4

これは、ステートメント用に拡張されています。セクション14.14.2を参照してください。Java言語仕様の拡張forステートメント 。

于 2012-11-22T15:44:20.660 に答える
3

それはと呼ばれEnhanced for-loopます。基本的に、各要素を順番にフェッチすることにより、コレクションを繰り返し処理します。したがって、インデックス上の要素にアクセスする必要はありません。

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

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

§14.14.2- Java言語仕様の拡張forループセクションを参照してください。

于 2012-11-22T15:42:56.773 に答える
2

それは「のそれぞれsonについてsuccessors、タイプsonNode」を意味します

于 2012-11-22T15:43:09.520 に答える
2

これは、forループの1つの表現です

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
    }
于 2012-11-22T15:46:03.873 に答える
1

これは拡張forループと呼ばれ、イテレータを使用してコレクションを反復処理する代わりに、これを単純にforループで使用できます。

イテレータの使用

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

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

拡張されたforループを使用するだけです。

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

したがって、イテレータと同じ機能を実行し、内部でイテレータを使用するのは、Java5で導入された単なる構文糖衣です。このforループを使用するには、クラスはIteratorインターフェースを実装する必要があります

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

}



}
于 2012-11-22T15:49:56.493 に答える
-1

この場合はforeachループであり、そのように記述されています

于 2021-03-09T15:05:17.727 に答える