반응형
기존에 배열을 순회할 때 다음과 같이 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인용.
반응형
'JAVA > Effective Java' 카테고리의 다른 글
규칙 48 - 정확한 답이 필요하다면 float와 double은 피하라 (0) | 2018.05.29 |
---|---|
규칙 47어떤 라이브러리가 있는지 파악하고 적절히 활용하라 (0) | 2018.05.29 |
메서드- 규칙 45 지역 변수의 유효범위를 최소화하라. (0) | 2018.05.29 |
메서드- 규칙 43 null 대신 빈 배열이나 컬렉션을 반환하라. (0) | 2018.05.29 |
메서드- 규칙 42 varags는 신중히 사용하라. (0) | 2018.05.29 |