Guava와 같은 Java 8 람다가 많은 라이브러리에서 출력은 공통 Java Collection Framework 인터페이스를 사용하므로 외부 / 내부 API로 쉽게 전달할 수 있으며 라이브러리 메소드가 수행하는 경우 (예 : lazy filter()
및 transform()
) 여전히 일부 지연된 계산을 활용 합니다.
그러나 Java 8 Streams에서 Collection
/ 를 얻기위한 호출 Map
은 터미널 (즉, 열망)이며 결과를 보유하기 위해 새 데이터 구조를 할당합니다.
중간에 여러 단계와 전략 패턴이있는 복잡한 계산의 경우 중간 결과로 인해 불필요한 할당이 많이 발생합니다.
따라서 사람들은 내부 API (예 : 전략 패턴 전략)를 가져 와서 반환하는 것이 좋은 습관이라고 생각합니까? Stream
아니면 게으른 API로 게으르지 만 간소화되지는 않습니다.
편집하다:
나의 주요 관심사 Stream
는 그것이 한 번만 소비 될 수 있고 Supplier<Stream<X>>
매우 번거로운 것처럼 보일 수 있다는 것입니다. 그것은 단지 당신에게 a를 통과 한 Collection
다음 다시 stream()
시도 하도록 강요 한다.