Java (자바)

[Java] 확장 for문 / Collection

Oscar:) 2024. 2. 5. 23:23

 

 

이번 포스팅에서는 확장 for문에 대해 알아보겠다.

 

 

 


 

확장 for문이란?

 

 

JDK 1.5 부터 추가된 기능으로, 기존 for문을 축약했다고 볼 수 있다.

 

기본 문법은 다음과 같다.

for (대입할 변수 : Collection) {
    //TODO
}

 

Collection의 타입과 대입할 변수의 타입이 일치해야 하며,

해당 Collection의 길이만큼 반복하여 변수에 대입된다.

 

*Collection에 대한 설명은 아래 'Collection ?' 탭에서 진행한다.

 

 

 

배열을 예시로 들어보겠다.

 

int[] array = {10, 20, 30, 40};

for (int i : array) {
    System.out.println(i);
}

 

결과)

 

변수 i에 배열 array 원소의 값이 하나씩 대입되며 출력되었다.

 

 

 


 

기존 for문과 비교

 

 

위와 마찬가지로, 배열을 예시로 비교해 보겠다.

 

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

// 기존 for문
for (int i = 0; i < array.length; i++) {
    System.out.println(array[i]);
}

// 확장 for문
for (int i : array) {
    System.out.println(i);
}

 

확실히 문법적으로 작성해야할 코드가 많이 줄어서

코드 작성도 간편하고 가독성도 좋아졌다.

 

 

 

하지만 확장 for문은 사용성에 있어서 제한적이다.

초기화식이 따로 없기 때문에, 카운트 변수의 역할을 해줄 변수가 없다.

 

int count = 0;

for (int i : array) {
    System.out.println(i);
    count ++;
}

 

그렇기에 카운트 변수가 필요하다면,

위 처럼 카운트 전용 변수를 따로 생성하여 사용해줘야 한다.

이렇게 사용할거면 차라리 while문을 쓸 것 같기도 하고...

 

 

 


 

Collection ?

 

 

자바에서 Collection이란, 데이터의 집합·그룹을 의미하며

이를 구현하는 클래스를 정의하는 인터페이스를 제공해준다.

 

Collection 상속 계층도는 다음과 같다.

 

 

Map의 경우 구조상 Collection을 상속하진 않지만,

자바에서는 Collection에 포함시키고 있다.

 

또한, 위 계층도에서는 생략되었지만 Queue, Arrays 등이 포함된다.

 

 

우리가 흔히 사용하는 Arrays, ArrayList, HashMap 등의 부모라고 볼 수 있다.

 

그렇기에 위에서 설명한 클래스의 객체는 모두 확장 for문에 사용할 수 있다.

 

 

 

 


 

 

 

오늘은 확장 for문에 대해 알아보았다.

 

아직 기존 for문이 손에 익어서 매번 기계처럼 반복문을 만들곤 하지만,

Collection을 다루는 반복문에서는 한번 써볼만 한 것 같다.