배경

자바 7까지는 일련의 원소를 반환하는 메서드의 반환 타입으로 Collection, Set, List같은 컬렉션 인터페이스, Iterable, 배열을 사용했음

  1. 기본은 컬렉션 인터페이스
  2. Iterable인터페이스 : foreach 문에서 혹은 반환된 원소 시퀀스가 일부 Collection 메서드를 구현할 수 없을 때
  3. 배열 : 반환 원소들이 기본 타입이거나 성능에 민감한 상황

⇒ Stream이 등장하면서 반환 타입을 정하기 복잡해짐

문제 상황

스트림 파이프라인에서 사용되는지, 반복문에서 사용되는지에 따라 적절히 구현하면 됨

→ 여러 상황을 모두 고려해 두 가지 방법(스트림 파이프라인 전용, 반복문 전용)을 모두 구현하는 것이 좋음

반환 타입 컬렉션 vs 스트림

Collection이 더 좋은 경우