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 |