首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 增強 for 循環(for-each)完全解析

     編輯:程式設計綜合問答

語法

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
}

限制與注意

  1. 無法獲取索引:需索引時用傳統 for。
  2. 不能修改集合結構:循環中 list.add/remove 會拋 ConcurrentModificationException。需用 Iterator.remove() 或複製列表遍歷。
  3. 基本類型會自動拆箱:List<Integer> 遍歷產生大量拆箱,高性能場景慎用。
  4. 非泛型集合:for (Object o : rawList) 需手動轉型。

性能對比

場景for-each傳統 forIterator
數組遍歷✓ 最快 (JIT 優化)✓ 同等✗ 額外對象
ArrayList✓✓ 隨機訪問快✓
LinkedList✓✗ O(n²)✓

Java 8+ 新寫法

list.forEach(s -> System.out.println(s));  // 內部迭代,可並行 stream().parallel()
  1. 上一篇文章:
  2. 下一篇文章:
Android ViewFlipper 子頁面 Button setEnabled(false) 不生效?根因是重複 inflate 導致操作非顯示 View HTML 嵌入樣式表: