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

J2SE 5.0 增強型 for 迴圈完整指南與自訂可迭代類別實現

     編輯:J2SE

J2SE 5.0 引入增強型 for 迴圈(for-each),簡化陣列與 `Collection` 遍歷,並支援實作 `Iterable` 介面的自訂類別。

基本語法

for (元素型別 變數 : 陣列或Collection) {
    // 處理變數
}

陣列與 Collection 範例

int[] nums = {1,2,3,4};
for (int n : nums) System.out.println(n);

List list = Arrays.asList("A","B","C");
for (String s : list) System.out.println(s);

編譯器轉換原理

陣列:轉為索引迴圈 `for (int i=0; i

Collection:轉為迭代器迴圈 `for (Iterator it = c.iterator(); it.hasNext(); ) { T e = it.next(); ... }`

實作 Iterable 讓自訂類別支援 for-each

public class MyRange implements Iterable {
    private final int start, end;
    public MyRange(int start, int end) { this.start=start; this.end=end; }
    @Override public Iterator iterator() {
        return new Iterator<>() {
            int current = start;
            public boolean hasNext() { return current <= end; }
            public Integer next() { return current++; }
        };
    }
}

// 使用
for (int i : new MyRange(1,5)) System.out.print(i + " "); // 1 2 3 4 5

常見陷阱與注意事項

  • 無法直接修改集合結構(增/刪),需使用 `Iterator.remove()` 或並發集合
  • 基本型別陣列會自動裝箱,產生額外物件,效能敏感場合建議用索引迴圈
  • 迴圈變數作用域僅限迴圈內,避免外部誤用
  • 對 `Map` 需遍歷 `entrySet()`、`keySet()` 或 `values()`
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved