728x90
앞서 이야기한 것처럼 자바 스트림(Stream)은 컬렉션 데이터를 함수형 프로그래밍 방식으로 처리할 수 있는 장점을 가지고 있습니다. 이번에는 스트림의 특징과 종류, 그리고 사용 방법 등에 대해 좀 더 자세히 살펴보겠습니다.
스트림의 특징
스트림은 크게 다음과 같은 특징을 가집니다.
- 순차 처리(Stream)와 병렬 처리(Parallel Stream)를 모두 지원합니다.
- 스트림은 데이터를 저장하지 않으며, 데이터를 처리하는 방식만을 정의합니다.
- 스트림은 데이터 소스로부터 데이터를 읽기 때문에 한 번만 사용 가능합니다.
- 중간 연산(intermediate operation)과 최종 연산(terminal operation)으로 구성됩니다.
- 중간 연산은 스트림을 반환합니다. 즉, 중간 연산을 여러 개 연결하여 사용할 수 있습니다.
- 최종 연산은 스트림을 종료하며, 스트림을 이용해 원하는 작업을 수행합니다.
스트림의 종류
스트림은 크게 세 가지 종류로 나눌 수 있습니다.
- 기본형 스트림: int, long, double 등 기본형 데이터를 다루는 스트림입니다.
- 객체 스트림: 객체를 다루는 스트림입니다.
- 병렬 스트림: 여러 스레드를 이용해 병렬 처리를 할 수 있는 스트림입니다.
각 종류별로 제공되는 스트림의 메서드와 기능이 다르므로, 필요에 따라 적절한 스트림을 선택하여 사용해야 합니다.
스트림의 사용 방법
스트림은 컬렉션 데이터를 처리할 때 가장 많이 사용됩니다. 스트림은 다음과 같은 순서로 사용합니다.
- 컬렉션 데이터를 스트림으로 변환합니다.
- 중간 연산을 이용해 데이터를 처리합니다.
- 최종 연산을 이용해 최종 결과를 반환합니다.
스트림의 사용 예시를 보면 다음과 같습니다.
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int sum = list.stream()
.filter(i -> i > 2)
.mapToInt(i -> i * 2)
.sum();
System.out.println(sum);
위 코드는 List의 요소 중에서 2보다 큰 요소를 2배로 만들어 합산한 값을 출력하는 예제입니다.
'자바 JAVA' 카테고리의 다른 글
Spring에서 비동기 처리하기 @EnableAsync (0) | 2024.11.22 |
---|---|
1. 자바 JAVA - 스트림(stream) (0) | 2023.01.17 |
자바 JAVA - 람다 표현식 (0) | 2023.01.14 |
자바 csv 파일쓰기 (한글깨짐 처리) (1) | 2021.09.14 |