이펙티브 자바/9장 일반적인 프로그래밍 원칙

아이템 58 전통적인 for 문보다는 for-each 문을 사용하라

말랑공룡 2023. 11. 30. 18:51

 

- 무언가를 할 때 필요한 것이 원소 뿐이라면 인덱스 변수나 반복자들은 기능하는 곳 없이 오류 가능성을 높일 뿐이다.

그럴 때는 for-each 문을 사용하는 편이 낫다.

- 그러나 for-each 문을 사용할 수 없는 상황이 세 가지 존재한다.

  • 파괴적인 필터링(destructive filtering) - 컬렉션을 순회하면서 그 컬렉션의 원소를 제거.
    => ConcurrentModificationException이 발생한다.
    => Collection의 removeIf 메서드를 사용
public boolean removeIf(Predicate<? super E> filter)
  • 변형(transforming) - 리스트나 배열을 순회하면서 그 원소의 값 일부 혹은 전체를 교체.=> 인덱스를 알 수 없기 때문.
  • 병렬 반복(parallel iteration) - 여러 컬렉션을 병렬로 순회해야 한다면 각자의 반복자와 인덱스 변수를 사용해 엄격하고 명시적으로 제어해야 한다.