Stream API의 주요 특징은 무엇인가요?
Stream API는 Java 8에서 도입된 기능으로, 컬렉션 데이터를 선언적이고 함수형 스타일로 처리할 수 있게 해줍니다.
Stream API의 주요 특징은 다음과 같습니다.
1. 데이터 소스에 대한 추상화 Stream은 컬렉션(List, Set, Map의 value 집합 등), 배열, I/O 채널 등 다양한 데이터 소스로부터 데이터를 추상화하여 처리할 수 있습니다.
이를 통해 데이터 처리 로직을 데이터 소스와 독립적으로 작성할 수 있습니다.
2. 함수형 프로그래밍 스타일 지원 람다식과 메서드 참조를 이용해 중간 연산과 최종 연산을 수행할 수 있습니다.
이는 명령형 코드보다 간결하고 가독성이 높은 코드 작성을 가능하게 만듭니다.
3. 중간 연산과 최종 연산의 구분 - *중간 연산*: filter, map, distinct, sorted 등으로 데이터를 변환하거나 필터링하는 연산이며, 지연(lazy) 처리됩니다.
즉, 중간 연산만으로는 실제 처리 동작이 일어나지 않습니다.
- *최종 연산*: forEach, collect, reduce, count 등으로 스트림의 처리 결과를 생성하거나 소비하는 연산이며, 파이프라인 수행 시점에 실제 연산이 일어납니다.
4. 지연 연산(Lazy Evaluation) 중간 연산은 필요한 최종 연산이 호출되기 전까지 실행되지 않으며, 데이터 처리가 가능한 최소한으로 수행됩니다.
이를 통해 효율적인 데이터 처리가 가능합니다.
5. 병렬 처리 지원 Stream API는 병렬 스트림(parallel stream)을 통해 멀티 코어를 활용한 병렬 처리가 쉽고 간단합니다.
개발자는 단순히 `.parallelStream()` 또는 `.parallel()` 메서드를 호출해 병렬 처리 환경을 구성할 수 있습니다.
6. 내부 반복(Internal Iteration) 개발자가 직접 반복문을 작성하는 대신, Stream API 내부에서 데이터 순회 및 처리를 수행합니다.
이를 통해 코드가 더 안전하고 간결해집니다.
7. 불변성 및 부작용 최소화 지향 스트림 연산은 일반적으로 원본 데이터를 변경하지 않고 새로운 결과를 생성합니다.
또한, 람다식 내에서 부작용을 최소화하는 함수형 프로그래밍 패러다임을 따릅니다.
8. 다양한 연산 제공 매핑(map), 필터링(filter), 정렬(sorted), 집계(reduce), 그룹화(groupingBy) 등 풍부한 연산 메서드를 제공하여 복잡한 데이터 처리도 간단한 코드로 표현할 수 있습니다.
Stream API는 데이터를 선언적이고 함수형 스타일로 처리할 수 있도록 하며, 지연 평가와 병렬 처리, 내부 반복을 지원함으로써 효율적이고 가독성 높은 데이터 처리 코드를 작성할 수 있도록 돕는 자바의 핵심 기능입니다.