// 傳統 for (索引)
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
// for-each (JDK 5+)
for (String s : list) {
System.out.println(s);
}
T[]Iterable<T> 的集合:List, Set, Queue...Iterator<T> 的物件(需轉為 Iterable 或手動迭代)list.remove() 拋 ConcurrentModificationException)。for (int i = 0; i < n; i++) process(i, arr[i])for (int i = list.size()-1; i >= 0; i--)for (int i = 0; i < list.size(); i++) { if (cond) list.remove(i--); }for (int i = 0; i < arr.length; i += 2)for (int i = 0; i < a.length; i++) use(a[i], b[i])
// 僅讀取、轉換、過濾
list.stream().filter(s -> s.length() > 3).forEach(System.out::println);
// 需要索引
IntStream.range(0, list.size())
.forEach(i -> System.out.println(i + ":" + list.get(i)));
// 平行處理 (大數據量)
list.parallelStream().map(String::toUpperCase).collect(toList());
| 場景 | 推薦寫法 |
|---|---|
| 單純遍歷讀取元素 | for-each (最優先) |
| 需要索引/反向/步長/修改結構 | 傳統 for |
| 函數式轉換/過濾/聚合 | Stream API |
| 高效能平行處理 | parallelStream (謹慎評估) |
原則:能用 for-each 就用 for-each,代碼更清晰、錯誤更少、效能不輸傳統迴圈。