반응형
[Effective Java] 종전의 for 루프보다는 for-each 루프를 사용하자. |
-
for-each 문은 Iterable 인터페이스를 구현하는 어떤 객체도 반복 처리가 가능하다.
Iterable 은 다음과 같이 정의된 interface 이다.
public interface Iterable<E>{
Iterator<E> iterator();
}
Iterable 인터페이스 구현은 어렵지 않다.
Summary
for-each 루프는 종전 for 루프에 비해 많은 장점을 제공한다.
성능 저하가 없으면서 명료하고 버그를 방지해준다.
for-each 루프를 사용할 수 없는 경우는 3 가지가 있다.
1. 필터링(filtering) - 어떤 컬렉션의 요소들을 오가면서 선택된 요소들을 삭제할 필요가 있다면 명시적 iterator 를 사용할 필요가 있다. 그 iterator 의 remove 메소드를 호출해야 하기 때문.
2. 변환(Transforming) - 요소들의 일부 또는 모든 값을 변경할 필요가 있다면, 요소의 값을 지정하기 위해 List 의 iterator 나 배열의 index 가 필요하다.
3. 병행 반복처리(Parallel iteration) - 병행으로 여러 컬렉션의 요소들을 오가면서 처리할 필요가 있다면 순환자나 인덱스 변수를 명시적으로 제어할 필요가 있다. 모든 iterator 나 인덱스 변수들이 병행으로 처리될 수 있게 하기 위함이다.
반응형
'프로그래밍 놀이터 > 디자인 패턴, 리펙토링' 카테고리의 다른 글
[Effective Java] 정확한 계산에는 float 이나 double 타입을 쓰지 말자. (0) | 2017.01.31 |
---|---|
[Effective Java] 라이브러리를 배우고 사용하자. (0) | 2017.01.30 |
[Effective Java] 지역 변수의 유효 범위를 최소화 하자. (0) | 2017.01.24 |
[Effective Java] 외부에 제공하는 모든 API 요소에 대해 문서화 주석을 넣자. (0) | 2017.01.23 |
[Effective Java] null 대신 비어있는 배열이나 컬렉션을 반환하자. (0) | 2017.01.19 |
댓글