728x90
반응형

Collection과 Stream 비교

Collection Stream
for(int n: numbers){
    ...
}
numbers.forEach(n -> ...)
외부반복(External Iteration)
제어 흐름 중복 발생
효율적이고 직접적인 요소 처리
지저분한 코드
유한 데이터 구조 API
내부반복(Internal Iteration)
제어 흐름 추상화
파이프-필터 기반 API
함축적인 표현
무한 연속 데이터 흐름 API

 


공통점

컬렉션과 스트림 모두 연속된 요소 형식의 값을 저장하는 자료구조의 인터페이스를 제공

둘 다 순서에 따라 순차적으로 요소에 접근

 


차이점

Collection Stream
각 계산식을 만날 때 마다 데이터가 계산됨 최종 연산이 실행 될 때에 데이터가 계산됨
자료구조 이므로 데이터에 접근, 읽기, 변경, 저장 같은 연산이 주요 관심사(직접 데이터 핸들링)
즉 데이터에 접근하는 방법을 직접 작성해야 함
filter, sorted, map 처럼 계산식(람다)을 표현하는 것이 주요 관심사(계산식을 JVM에게 던짐)
즉 데이터에 접근하는 방법이 추상화 되어 있음
작업을 위해서 Iterator로 모든 요소를 순환해야 함 계산식(알고리즘)을 미리 적어 두고 계산시에 람다식으로 JVM에 넘김
메모리에 모든 요소가 올라가 있는 상태에서 요소들을 누적시키며 결과를 계산 내부에서 요소들을 어떻게 메모리에 올리는 지는 관심 X
메모리 사용량이 늘어남 메모리 사용량이 줄어듦

 

반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

[Java] Stream 예제  (0) 2022.03.23
[Java] Stream 생성 방법  (0) 2022.03.22
[Java] 스트림(Stream)의 특징  (0) 2022.03.18
[Java] 스트림(Stream)이란 ?  (0) 2022.03.16
[Java] 함수형 인터페이스  (0) 2022.03.15
복사했습니다!