외부 반복
개발자가 직접 for문으로 제어해주는 반복이다. 어떻게 반복할지 세밀하게 제어해줄 수 있다. 주로 break, continue로 세밀하게 제어해주어야 한다든가 간단한 구문일 경우 외부 반복을 쓴다.
내부 반복
스트림의 forEach 등을 통해 무엇을 반복할지만 정해주는 반복이다. 선언적 프로그래밍 같이 어떻게 반복할지는 스트림이 정해주기 때문에 추상화 수준도 높다고 할 수 있다. 코드가 간결하고 가시성이 높아 대부분의 경우 내부 반복을 사용한다.