내부 반복과 외부 반복

kkambbak1·2023년 3월 17일
0

https://github.com/BanditBool2/ReadingRecord/issues/5

외부 반복 : Iterator와 같이 사용자가 직접 별도의 객체를 생성하여 명시적으로 컬렉션의 각 요소를 가져와 처리하는 방식. 개발자가 반복의 처음과 끝을 제어할 수 있다.

내부 반복 : Stream과 같이 개발자가 직접 반복을 제어하지 않고 컬렉션 내부적으로 반복을 처리. 사용자는 각 요소에 대한 처리 로직에만 집중할 수 있으며 코드의 가독성을 높인다.

다음과 같은 컬렉션이 있을 때,

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);

해당 컬렉션의 모든 요소를 출력하는 함수를 외부 반복과 내부 반복으로 표현하면 다음과 같다.

//외부 반복
Iterator<Integer> iterator = list.iterator(); 
while (iterator.hasNext()) {
    int num = iterator.next();
    System.out.print(num + " ");
}
//내부 반복
list.stream().forEach(num -> System.out.print(num + " "));

외부반복 vs 내부반복

  • 외부반복은 요소의 일부만을 사용하거나 요소를 수정할 때 성능이 좋지만 가독성과 재사용성이 낮다.
  • 내부반복은 간결하고 가독성이 좋아지며 멀티코어 CPU를 활용한 병렬처리가 가능한 장점이 있으나 일부 요소만을 처리하거나 수정하는 경우 비효율적이다.

도움주신 분: hanbonghun

profile
윤성

0개의 댓글