文法
複製代碼代碼如下:
for (Object objectname : preArrayList(一個Object物件的列表)) {}
範例
複製代碼代碼如下:
package com.kuaff.jdk5;
import java.util.*;
import java.util.Collection;
public class Foreach
{
private Collection c = null;
private String[] belle = new String[4];
public Foreach()
{
belle[0] = "西施";
belle[1] = "王昭君";
belle[2] = "貂禪";
belle[3] = "楊貴妃";
c = Arrays.asList(belle);
}
public void testCollection()
{
for (String b : c)
{
System.out.println("曾經風化的絕代:" + b);
}
}
public void testArray()
{
for (String b : belle)
{
System.out.println("曾經的青史留名:" + b);
}
}
public static void main(String[] args)
{
Foreach each = new Foreach();
each.testCollection();
each.testArray();
}
}
對於集合類型和數組類型的,我們都可以透過foreach語法來存取它。上面的例子中,以前我們要依序存取數組,挺麻煩:
複製代碼代碼如下:
for (int i = 0; i < belle.length; i++)
{
String b = belle[i];
System.out.println("曾經風化的絕代:" + b);
}
現在只需下面簡單的語句即可:
複製代碼代碼如下:
for (String b : belle)
{
System.out.println("曾經的青史留名:" + b);
}
集合的存取效果更明顯。以前我們訪問集合的程式碼:
複製代碼代碼如下:
for (Iterator it = c.iterator(); it.hasNext();)
{
String name = (String) it.next();
System.out.println("曾經風化的絕代:" + name);
}
現在我們只需下面的語句:
複製代碼代碼如下:
for (String b : c)
{
System.out.println("曾經風化的絕代:" + b);
}
Foreach也不是萬能的,它也有以下的缺點:
在以前的程式碼中,我們可以透過Iterator執行remove操作。
複製代碼代碼如下:
for (Iterator it = c.iterator(); it.hasNext();)
{
itremove()
}
但是,在現在的foreach版中,我們無法刪除集合包含的物件。你也不能替換物件。
同時,你也不能並行foreach的多個集合。所以,當我們寫程式碼時,還得看情況而使用它。