Post

Java For Loop

1. 루프

루프는 루프 카운터를 증가시키고 평가하여 특정 연산을 반복할 수 있는 제어 구조이다.

첫 번째 반복 전에 루프 카운터가 초기화된 다음 조건 평가가 수행되고 단계 정의가 수행된다(일반적으로 단순 증가).

for 루프 의 구문은 다음과 같다.

1
2
for (initialization; Boolean-expression; step) 
    statement;

간단한 예이다.

1
2
3
for (int i = 0; i < 5; i++) {
    System.out.println("Simple for loop: i = " + i);
}

initialization, Boolean 표현, 그리고 step에 사용 하기위한 문은 선택 사항이다. 다음은 무한 for 루프의 예이다.

1
2
3
for ( ; ; ) {
    // Infinite for loop
}

1) 루프 레이블 지정

for 루프에 레이블을 지정할 수도 있다. 특정 for 루프에서 중단/계속할 수 있도록 for 루프가 중첩되어 있으면 유용하다.

1
2
3
4
5
6
7
8
9
10
aa: for (int i = 1; i <= 3; i++) {
    if (i == 1)
      continue;
    bb: for (int j = 1; j <= 3; j++) {
        if (i == 2 && j == 2) {
            break aa;
        }
        System.out.println(i + " " + j);
    }
}

2. for 루프 개선

Java 5 이후로, 우리는 enhanced라고 불리는 두 번째 종류의 루프를 가지고 있는데, 이를 위해 배열이나 컬렉션의 모든 요소를 더 쉽게 반복할 수 있다.

향상된 for 루프 구문은 다음과 같다.

1
2
for(Type item : items)
    statement;

이 루프는 표준 for 루프와 비교하여 단순화되었으므로 루프를 초기화할 때 두 가지만 선언하면 된다.

  • 현재 반복 중인 요소에 대한 핸들

  • 반복 중인 소스 배열/컬렉션

항목의 각 요소에 대해 항목 변수에 요소를 할당 하고 루프 본문을 실행한다.

간단한 예이다.

1
2
3
4
int[] intArr = { 0,1,2,3,4 }; 
for (int num : intArr) {
    System.out.println("Enhanced for-each loop: i = " + num);
}

이를 사용하여 다양한 Java 데이터 구조를 반복할 수 있다.

List<String> 목록 개체가 주어지면 반복할 수 있다.

1
2
3
for (String item : list) {
    System.out.println(item);
}

Set<String> set에 대해서도 유사하게 반복할 수 있다.

1
2
3
for (String item : set) {
    System.out.println(item);
}

Map<String, Integer> 맵이 주어지면 이를 반복할 수도 있다.

1
2
3
4
5
6
for (Entry<String, Integer> entry : map.entrySet()) {
    System.out.println(
      "Key: " + entry.getKey() + 
      " - " + 
      "Value: " + entry.getValue());
}

1) Iterable.forEach()

Java 8부터 for-each 루프를 약간 다른 방식으로 활용할 수 있다. 이제 Iterable 인터페이스에 수행하려는 작업을 나타내는 람다식을 허용 하는 전용 forEach() 메서드가 있다.

내부적으로는 단순히 작업을 표준 루프에 위임한다.

1
2
3
4
5
6
default void forEach(Consumer<? super T> action) {
    Objects.requireNonNull(action);
    for (T t : this) {
        action.accept(t);
    }
}

아래는 예이다.

1
2
3
4
5
6
7
8
List<String> names = new ArrayList<>();
names.add("Larry");
names.add("Steve");
names.add("James");
names.add("Conan");
names.add("Ellen");

names.forEach(name -> System.out.println(name));

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.