[Effective Java] 46. for-each 문을 사용하라

최대 1 분 소요

JDK 1.5에 도입된 for-each 문은 반복자나 첨자 변수, 기타 성가신 코드를 없애서 오류 가능성을 없앤다.

또한, 성능면에서도 기존 for 문과 거의 동일하고 어떤 상황에서는 for문보다 나은 성능을 보이기도 한다.

자바 성능 튜닝이야기 책에는 성능상으로는 조금 떨어진다고 하는데.. 뭐가 맞는걸까.

1. Iterable 인터페이스

for-each 문은 배열이나 Collection뿐 아니라 Iterable 인터페이스를 구현한 모든 객체를 순환할 수 있다.

public interface Interable {
	Iterator<E> iterator();
}

2. for-each문을 사용할 수 없는 경우

1. 필터링(filtering)

Collection 순환 도중 특정 원소를 삭제할 필요가 있다면 iterator를 명시적으로 사용해야 한다. remove()를 호출해야 하기 때문이다.

2. 변환(transforming)

순환 도중 일부 값을 수정할 필요가 있다면 배열 첨자가 필요하기 때문에 기존 for문을 사용할 수 밖에 없다.

3. 병렬 순회(parallel iteration)

여러 Collection이 병렬적으로 순회되어야 하고 iterator나 배열 첨자가 특정 조건에 따라 나아가야한다면 명시적 제어를 위해 기존 for문을 사용해야 한다.

댓글남기기