Responsive Advertisement

Java For Each Loop: 배열과 컬렉션을 효율적으로 순회하는 방법

Java의 For Each Loop는 배열이나 컬렉션을 간단하고 효율적으로 순회할 수 있는 반복문입니다. 일반적인 for 루프에 비해 코드가 간결하고 가독성이 좋아 자주 사용됩니다. 이번 글에서는 For Each Loop의 문법과 활용법, 그리고 주의사항을 다양한 예제와 함께 살펴보겠습니다.

1. For Each Loop 기본 문법

For Each Loop는 배열이나 컬렉션의 요소를 하나씩 순회하며, 각 요소에 접근할 수 있도록 합니다. 기본 문법은 다음과 같습니다:

for (데이터타입 변수 : 배열 또는 컬렉션) {
    // 실행할 코드
}

위 구조에서 배열 또는 컬렉션의 각 요소가 변수에 할당되며, 이를 반복적으로 처리할 수 있습니다.

예제: 배열 순회

public class ForEachExample {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};

        for (int num : numbers) {
            System.out.println("숫자: " + num);
        }
    }
}

출력 결과:

숫자: 1  
숫자: 2  
숫자: 3  
숫자: 4  
숫자: 5  

2. For Each Loop의 다양한 활용

2.1 문자열 배열 순회

For Each Loop는 문자열 배열에도 사용할 수 있습니다.

public class StringArrayExample {
    public static void main(String[] args) {
        String[] fruits = {"사과", "바나나", "체리"};

        for (String fruit : fruits) {
            System.out.println("과일: " + fruit);
        }
    }
}

출력 결과:

과일: 사과  
과일: 바나나  
과일: 체리  

2.2 컬렉션 순회

For Each Loop는 ArrayList와 같은 컬렉션을 순회할 때도 유용합니다.

import java.util.ArrayList;

public class CollectionExample {
    public static void main(String[] args) {
        ArrayList<String> cars = new ArrayList<>();
        cars.add("BMW");
        cars.add("Tesla");
        cars.add("Audi");

        for (String car : cars) {
            System.out.println("자동차: " + car);
        }
    }
}

출력 결과:

자동차: BMW  
자동차: Tesla  
자동차: Audi  

2.3 2차원 배열 순회

For Each Loop는 중첩하여 2차원 배열을 순회하는 데도 사용할 수 있습니다.

public class TwoDimArrayExample {
    public static void main(String[] args) {
        int[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        };

        for (int[] row : matrix) {
            for (int num : row) {
                System.out.print(num + " ");
            }
            System.out.println();
        }
    }
}

출력 결과:

1 2 3  
4 5 6  
7 8 9  

3. For Each Loop 사용 시 주의사항

  • 수정 불가: For Each Loop는 배열이나 컬렉션의 요소를 직접 수정할 수 없습니다. 요소를 변경하려면 for 루프를 사용해야 합니다.
  • 인덱스 접근 불가: For Each Loop에서는 배열의 인덱스에 직접 접근할 수 없으므로, 인덱스가 필요한 작업에서는 for 루프를 사용해야 합니다.
  • NullPointerException: 순회하려는 배열이나 컬렉션이 null이면 예외가 발생하므로, 반드시 null 검사를 수행하세요.

요소 수정이 필요한 경우

public class ModifyArray {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};

        // 기존 요소 값을 2배로 변경
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] *= 2;
        }

        for (int num : numbers) {
            System.out.println(num);
        }
    }
}

출력 결과:

2  
4  
6  
8  
10  

4. For Each Loop와 기존 For Loop 비교

For Each Loop는 간결하지만, 기존 for 루프에 비해 제한이 있습니다. 아래는 두 방식의 비교 예제입니다.

For Each Loop

int[] numbers = {10, 20, 30};

for (int num : numbers) {
    System.out.println(num);
}

기존 For Loop

int[] numbers = {10, 20, 30};

for (int i = 0; i < numbers.length; i++) {
    System.out.println(numbers[i]);
}

For Each Loop는 코드를 간결하게 하지만, 요소를 수정하거나 인덱스를 참조할 필요가 있는 경우 기존 for 루프를 사용하는 것이 더 적합합니다.

5. 결론

Java의 For Each Loop는 배열과 컬렉션을 간단히 순회할 수 있어 코드의 가독성을 높이고 오류를 줄이는 데 유용합니다. 다양한 예제를 통해 For Each Loop의 활용법을 익히고, 필요에 따라 기존 for 루프와 적절히 조합하여 사용해 보세요!

댓글 쓰기