1. 스트림(Stream)
1) data의 흐름을 말한다.
2) 컬렉션(Collection) 형태로 구성된 데이터를 람다를 이용해 간결하고 직관적으로 프로세스하게 해준다.
- 배열, 컬렉션을 대상으로 연산을 수행한다.
- 일관성 있는 연산으로 자료의 처리를 쉽고 간단하게 해준다.
3) for, while 등을 이용하던 기존 loop을 대체해서 쓸 수 있다.
4) 손쉽게 병렬 처리를 할 수 있게 해준다.
2. 스트림 특징
1) 한번 생성하고 사용한 스트림은 재사용 할 수 없다.
- 자료에 대한 스트림을 생성하여 연산을 수행하면 스트림은 소모된다.
- 다른 연산을 수행하기 위해서는 스트림을 다시 생성해야한다.
2) 스트림 연산은 기존 자료를 변경하지 않는다.
- 자료에 대한 스트림을 생성하면 스트림이 사용하는 메모리 공간은 별도로 생성되므로 연산이 수행되어도 기존 자료에 대한 변경은 발생하지 않는다.
3) 스트림 연산은 중간 연산과 최종 연산으로 구분된다.
- 스트림에 대해 중간 연산은 여러 개의 적용 될 수 있지만 최종 연산은 마지막에 한 번만 적용된다.
- 최종 연산이 호출되어야 중간 연산에 대한 수행이 이루어지고 그 결과가 만들어진다.
- 지연 연산
- 중간 연산에 대한 결과를 연산 중에 할 수 없다.
3. 스트림생성
4. 스트림 중간 연산, 최종 연산
1) 중간 연산 : filter(), map(), sorted() 등 조건에 맞는 요소를 추출(filter)하거나 요소를 변환한다.(map)
- filter() : 만족하는 데이터만 걸러내는데 사용한다.
- map() : 데이터를 변형하는데 사용하고 데이터에 해당 함수가 적용된 결과물을 제공하는 스트림을 리턴한다.
- sorted() : 데이터가 순서대로 정렬된 스트림을 리턴한다.
2) 최종 연산이 호출될 때 중간연산이 수행되고 결과가 생성된다.
3) 중간 연산과 최종 연산에 대한 구현을 람다식을 활용한다.
4) 최종 연산 : forEach(), count(), sum() 등
5) 스트림이 관리하는 자료를 하나씩 소모해가면서 연산이 수행된다.
6) 최종 연산 후에 스트림은 더 이상 다른 연산을 적용할 수 없다.
7) 여러가지 중간 처리를 이어붙이는 것이 가능하다.
- Source(컬렉션, 배열) => 중간처리 => 종결 처리
'프로그래밍 > Java' 카테고리의 다른 글
[자바 - Java] I/O 입출력 스트림 inputstream outputstream (0) | 2022.09.13 |
---|---|
[자바 - Java] 예외처리 오류처리 try catch finally exception throw (0) | 2022.09.12 |
[자바 - Java]프로그래밍 방법론 - 객체지향 함수형 프로그래밍 람다식 (0) | 2022.09.10 |
[자바 - Java]프로그래밍 방법론 - 함수형 프로그래밍, 객체지향 프로그래밍, 1급 시민, 구조적 프로그래밍, 절차식 프로그래밍, 순수함수 (0) | 2022.09.09 |
[자바 - Java] 내부 클래스 ; 인스턴스 정적 지역 익명 클래스 (0) | 2022.09.08 |