Java 8 (Stream API)
발행: (2025년 12월 15일 오후 05:39 GMT+9)
3 min read
원문: Dev.to
Source: Dev.to
Stream API의 특징
- 선언형 – 함수형 스타일을 사용해 간결하고 읽기 쉬운 코드를 작성합니다.
- 지연 평가 – 최종 연산이 필요할 때만 연산이 실행됩니다.
- 병렬 실행 – 멀티코어 프로세서를 활용할 수 있도록 병렬 스트림을 지원합니다.
- 재사용 가능한 연산 –
map(),filter(),sorted()와 같은 연산을 체이닝할 수 있습니다. - 저장소 없음 – 스트림은 데이터를 저장하지 않고, 오직 처리만 합니다.
스트림은 내부적으로 어떻게 동작하나요?
- 스트림 생성 – 컬렉션, 배열 또는 정적 메서드에서 생성합니다.
- 중간 연산 적용 – 데이터를 변환합니다(예:
filter(),map(),sorted()). - 최종 연산 적용 – 결과를 생성합니다(예:
forEach(),collect(),reduce()).
스트림 생성 방법
- 컬렉션에서 –
list.stream()또는set.stream(). - 배열에서 –
Arrays.stream(array). Stream.of()사용 – 고정된 값 집합으로 스트림을 생성합니다.- 무한 스트림 –
Stream.iterate()또는Stream.generate()로 무한 시퀀스를 생성합니다.


중간 연산
중간 연산은 스트림을 다른 스트림으로 변환합니다. 흔히 사용되는 연산은 다음과 같습니다:
filter()– 조건에 따라 요소를 필터링합니다.map()– 각 요소를 다른 값으로 변환합니다.sorted()– 요소를 정렬합니다.distinct()– 중복을 제거합니다.skip()– 처음 n개의 요소를 건너뜁니다.


스트림 종류
순차 스트림
단일 스레드에서 요소를 하나씩 처리합니다. stream()을 호출하면 기본적으로 생성됩니다.


병렬 스트림
여러 스레드에서 동시에 연산을 수행하여 멀티코어 CPU를 활용합니다.
무한 스트림
무한한 시퀀스를 생성합니다. limit()을 사용해 무한 실행을 방지합니다.

