JAVA STREAM이란?
java8부터 지원하는 Stream은 컬렉션, 배열등에 대해 저장되어 있는 요소들을 하나씩 참조하며 반복적인 처리를 가능케하는 기능이다. 이러한 Stream을 이용한다면 불필요한 for문이나 Each문과 그 안에서 이루어지는 if문등의 분기처리를 쓰지 않고도 깔끔하고 직관적인 코드로 변경할 수 있다.
Stream API의 특징
- 스트림은 외부 반복을 통해 작업하는 컬렉션과 다르게, 내부 반복을 통해 작업을 수행합니다
- 스트림은 재사용이 가능한 컬렉션과 다르게 단 1번만 사용할 수 있습니다.
- 스트림은 원본 데이터를 변경하지 않고, 복사해서 사용됩니다.
- 스트림 연산은, 필터-맵(filter-map) 기반의 API를 사용하여 지연(Lazy) 연산을 통해 성능을 최적합니다.
- 스트림은 parallelStream() 메소드를 통한 병렬처리를 지원합니다.
Stream API의 3가지 단계
Stream은 데이터를 처리하기 위해 다양한 연산들을 지원한다. Stream이 제공하는 연산을 이용하면 복잡한 작업들을 간단히 처리 할 수 있는데, 스트림에 대한 연산은 크게 생성하기, 가공하기, 결과만들기 3가지 단계로 나눌 수 있다.
● 생성하기
● 가공하기
● 결과만들기
1. 생성하기
- Stream 객체를 생성하는 단계
- Stream은 재사용이 불가능하므로, 닫히면 다시 생성해주어야 한다.
- Stream 연산을 하기 위해서는 먼저 Stream 객체를 생성해주어야 한다. 배열, 컬렉션, 임의의 수, 파일 등 거의 모든 것을 가지고 스트림을 생성할 수 있다. 여기서 주의할 점은 연산이 끝나면 Stream이 닫히기 때문에, Stream이 닫혔을 경우 다시 Stream을 생성해야 한다는 것이다.
2. 가공하기
- 원본의 데이터를 별도의 데이터로 가공하기 위한 중간 연산
- 연산 결과를 Stream으로 다시 반환하기 때문에 연속해서 중간 연산을 이어갈 수 있다.
- 가공하기 단계는 원본의 데이터를 별도의 데이터로 가공하기 위한 중간 연산의 단계이다. 어떤 객체의 Stream을 원하는 형태로 처리할 수 있으며, 중간 연산의 반환값은 Stream이기 때문에 필요한 만큼 중간 연산을 연결하여 사용할 수 있다.
3. 결과 만들기
- 가공된 데이터로부터 원하는 결과를 만들기 위한 최종 연산
- Stream의 요소들을 소모하면서 연산이 수행되기 때문에 1번만 처리가능하다.
'Java' 카테고리의 다른 글
<JAVA> Stream sorted 메서드 (0) | 2023.01.24 |
---|---|
<JAVA> Stream Map메서드 (0) | 2023.01.23 |
<Java> Stream Filter 메서드 (0) | 2023.01.21 |
[Java] 이클립스 JDK 환경 설정 (0) | 2022.05.14 |
[Java] OpenJDK 1.8 설치 및 환경설정 (0) | 2022.05.14 |