Java 5 引入的 foreach 迴圈(正式名稱為增強型 for 迴圈),提供了更簡潔、可讀性更高的方式來遍歷集合與陣列。它隱藏了迭代器的複雜細節,讓開發者能專注於業務邏輯。
for (元素類型 變數名 : 陣列或集合) {
// 處理變數名代表的當前元素
}
其中冒號 : 可讀作「in」,即「對集合中的每一個元素執行迴圈體」。
以下示範如何分別遍歷 Collection 與陣列:
package com.example.foreach;
import java.util.*;
public class ForeachDemo {
private Collection<String> names = new ArrayList<>();
private String[] beauties = new String[4];
public ForeachDemo() {
beauties[0] = "西施";
beauties[1] = "王昭君";
beauties[2] = "貂蟬";
beauties[3] = "楊貴妃";
names = Arrays.asList(beauties);
}
public void iterateCollection() {
for (String name : names) {
System.out.println("傾國傾城:" + name);
}
}
public void iterateArray() {
for (String name : beauties) {
System.out.println("青史留名:" + name);
}
}
public static void main(String[] args) {
ForeachDemo demo = new ForeachDemo();
demo.iterateCollection();
demo.iterateArray();
}
}
傳統 for 迴圈:
for (int i = 0; i < beauties.length; i++) {
String name = beauties[i];
System.out.println("傾國傾城:" + name);
}
foreach 簡化版:
for (String name : beauties) {
System.out.println("青史留名:" + name);
}
使用 Iterator:
for (Iterator<String> it = names.iterator(); it.hasNext(); ) {
String name = it.next();
System.out.println("傾國傾城:" + name);
}
foreach 簡化版:
for (String name : names) {
System.out.println("傾國傾城:" + name);
}
Iterator.remove() 可在遍歷時安全刪除,foreach 做不到。因此,開發時應根據具體場景選擇:單純遍歷讀取用 foreach,需修改結構或需索引時用傳統寫法。