반응형
스트림
- 자바8에 추가된 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있게 해주는 반복자
스트림 특징
- 람다식으로 요소 처리 코드를 제공한다,
- 내부 반복자를 사용하므로 병렬 처리가 쉽다.
- 스트림은 중간 처리와 최종 처리를 할 수 있다.
병렬(parallel) 처리란 한 가지 작업을 서브 작업을 나누고, 서브 작업들을 분리된 스레드에서 병렬적으로 처리하는 것을 말한다.
스트림의 종류
- Stream, IntStream, LongStream, DoubleStream
스트림 파이프라인
리덕션(Reduction)
- 대량의 데이터를 가공해서 축소하는 것
- 리덕션의 결과물로 바로 집계할 수 없을 경우 필터, 매핑, 정렬, 그룹핑 등의 중간 처리를 통해 결과물을 처리 할 수 있다.
- 리턴 타입이 스트림이라면 중간 처리 메소드이고, 기본 타입이거나 OptionalXXX라면 최종 처리 메소드이다.
중간단계
- 필터링 : 중간 처리 기능으로 요소를 걸러내는 역할 ex) distinct, filter
- 매핑 : 스트림의 요소를 다른 요소로 대체하는 역할
- 정렬 : Comparable 구현 하거나 Comparator을 사용
- 루핑 : 요소 전체를 반복하는 것, 최종 처리 메소드가 실행되지 않으면 지연되기 때문에 반드시 최종 처리 메소드가 호출이 되어야 동작한다. ex) peek, forEach
Optional 클래스
- 집계하는 값이 존재 하지 않는 경우 디폴트 값을 설정할 수 있으며, 집계 값을 처리하는 Consumer도 등록할 수 있다.
- isPresent 값이 저장되어 있는지 여부
- orElse 값이 저장되어 있지 않은 경우 디폴트 값 설정
- ifPresent 값이 저장되어 있을 경우 Consumer에서 처리
최종단계
- 매칭 : 최종 처리 단계에서 요소들이 특정 조건에 만족하는지 확인하는 역할
- 기존 집계 sum, count, average, max, min
- 커스텀 집계(reduce) : 다양한 집계 결과물을 만들 수 있도록 제공하는 메소드
- 수집 : 요소들을 수집. Collector.toList, toSet, toMap, toConcurrentMap(Thread Safe)
병렬처리
멀티 코어 CPU 환경에서 하나의 작업을 분할해서 각각의 코어가 병렬적으로 처리하는 것을 말한다.
동시성 - 멀티 작업을 위해 멀티 스레드가 번갈아가며 실행하는 것을 말함.
병렬성 - 멀티 작업을 위해 멀티 코어를 이용해서 동시에 실행하는 것을 말함.
반응형
'Develop' 카테고리의 다른 글
이것이 자바다 - IO 기반 입출력 및 네트워킹 (0) | 2020.02.22 |
---|---|
Java9 Java10 특징 찾아보기 (0) | 2020.02.22 |
이것이 자바다 - 컬렉션 프레임워크 (0) | 2020.02.22 |
이것이 자바다 - 제네릭 & 람다 (0) | 2020.02.22 |
이것이 자바다 - 멀티 스레드 (0) | 2020.02.22 |
댓글