for (元素類型 變量名 : 可迭代對象) {
// 循環體
}
int[] arr = {1,2,3}; for (int x : arr)Iterable<E> 的集合:List<String> list; for (String s : list)編譯器將其轉換為迭代器模式:
// 數組版
for (int i = 0; i < arr.length; i++) {
int x = arr[i];
// body
}
// 集合版
for (Iterator<String> it = list.iterator(); it.hasNext(); ) {
String s = it.next();
// body
}
list.add/remove 會拋 ConcurrentModificationException。需用 Iterator.remove() 或複製列表遍歷。List<Integer> 遍歷產生大量拆箱,高性能場景慎用。for (Object o : rawList) 需手動轉型。| 場景 | for-each | 傳統 for | Iterator |
|---|---|---|---|
| 數組遍歷 | ✓ 最快 (JIT 優化) | ✓ 同等 | ✗ 額外對象 |
| ArrayList | ✓ | ✓ 隨機訪問快 | ✓ |
| LinkedList | ✓ | ✗ O(n²) | ✓ |
list.forEach(s -> System.out.println(s)); // 內部迭代,可並行 stream().parallel()