![](/img/trans.png)
[英]In Java, why the output of int a=('a'+'b'+'c'); are different form System.out.println('a'+'b'+'c'+“”)
[英]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 每個循環。 你也可以這樣寫:
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 循環部分。
它的意思是“對於每個son
在successors
,其中的類型son
是Node
”
這是您的 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.