본문 바로가기
프로그래밍 놀이터/디자인 패턴, 리펙토링

[Effective Java] 종전의 for 루프보다는 for-each 루프를 사용하자.

by 돼지왕 왕돼지 2017. 1. 26.
반응형

 [Effective Java] 종전의 for 루프보다는 for-each 루프를 사용하자.


Effective JAVA, filtering, for each, for loop, for-each, index, Interface, iterable, parallel iteration, remove, transforming, [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 나 인덱스 변수들이 병행으로 처리될 수 있게 하기 위함이다.





반응형

댓글