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

Java 增強型 for 循環(for-each)完整解析與範例

     編輯:Java 相關知識

Java 5 引入的增強型 for 循環(for-each),簡化了陣列與集合的遍歷寫法,減少索引越界風險,提升程式碼可讀性。本文透過完整範例示範其在一維陣列、多維陣列、Collection 與 List 等資料結構上的應用,並比較傳統 for 循環與 Iterator 的差異。

基本語法

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

範例程式碼

package com.david5;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

public class ForTest {
    public static void main(String[] args) {
        // 1. 一維陣列
        int[] arr = {1, 5, 6, 89, 0};
        for (int element : arr) {
            System.out.println(element);
        }
        System.out.println("----------");

        // 2. 二維陣列
        int[][] brr = {{1, 3, 2}, {2, 5, 7}};
        for (int[] row : brr) {
            for (int element : row) {
                System.out.print(element);
            }
            System.out.println();
        }
        System.out.println("===========");

        // 3. Collection 介面
        Collection<String> co1 = new ArrayList<>();
        co1.add("one");
        co1.add("two");
        co1.add("three");
        for (String str : co1) {
            System.out.println(str);
        }
        System.out.println("---------");

        // 4. List 介面
        List<String> co2 = new ArrayList<>();
        co2.add("bb");
        co2.add("cc");
        co2.add("dd");
        for (String str : co2) {
            System.out.println(str);
        }
        System.out.println("------------");

        // 5. Iterator 迭代器寫法(等價於 for-each 底層實作)
        for (Iterator<String> it = co2.iterator(); it.hasNext(); ) {
            String bb = it.next();
            System.out.println(bb);
        }
        System.out.println("----------");

        // 6. 傳統 for 循環(需索引操作時適用)
        for (int i = 0; i < co2.size(); i++) {
            System.out.println(co2.get(i));
        }
    }
}

執行結果

1
5
6
89
0
----------
132
257
===========
one
two
three
---------
bb
cc
dd
------------
bb
cc
dd
----------
bb
cc
dd

使用時機建議

  • 僅需遍歷讀取元素:優先使用增強型 for,語法簡潔且不易出錯。
  • 需要知道索引、或需在遍歷時修改集合結構(增刪元素):請改用傳統 for (int i=0; i<size; i++) 或 Iterator 配合 remove()。
  • 多維陣列:外層遍歷列(row),內層再遍歷該列元素。

底層原理

增強型 for 在編譯期會被轉換為 Iterator 模式(陣列則使用索引計數器),因此無法直接移除集合元素,否則會拋出 ConcurrentModificationException。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved