JAVA/Effective Java

메서드- 규칙 46 for문 보다는 for-each 문을 사용하라

반응형

기존에 배열을 순회할 때 다음과 같이 for문장을 사용하는 경우가 있다.


1
2
3
for (int i = 0; i < a.length; i++) {
  doSomething(a[i]);
}
cs



새로운 변수를 선언해야 하고, 변수를 어떻게 사용하느냐에 따라 오류가 발생할 가능성도 있다.

이는 자바 1.5부터 도입된 for-each 무은 성가신 코드를 제거하고 반복자나 첨자를 변수를 완전히 제거해서 오류 가능성을 없앴다.




1
2
3
List<string> strs = Lists.asList("dbs", "dd");
for (String str : strs)
   doSomething(str);
cs




for-each 문장은 컬렉션과 배열뿐 아니라 Iterable 인터페이스를 구현하는 어떤 객체도 순회할 수 있다.
Iterable 인터페이스 메서드가 하나뿐인 아주 간단한 인터페이스이다. 

그렇기에 반복이 필요한 경우 Collection 재정의는 어렵더라도 Iterable 인터페이스를 재정의하라.

요약하자면 for-each 문은 전통적인 for 문에 비해 명료하고 버그 발생 기능이 적다.
다만 정확한 index 접근이 필요한 경우거나, remove()를 중간에 호출할 수 는 없다.(이는 Iterator를 통해서 해결할 수 있다.)



출처 : 조슈아 블로크, 『 Effective Java 2/E』, 이병준 옮김, 인사이트(2014.9.1), 규칙46인용.

반응형