일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 오토와이어드
- git #gitlab #github
- zepettoworld.com
- layout #thymeleaf #화면분할
- Component
- autowired
- 1
- 스프링
- 스프링 부트
- DispatcherServlet
- Bean
- spring
- Today
- Total
기록과 정리
Java8 Stream API (스트림 API) 본문
이 글은 백기선님의 '더 자바, Java 8' 강의를 참고하였습니다.
https://www.inflearn.com/course/the-java-java8/lecture/48041?speed=1&tab=curriculum
Stream 소개
스트림은 왜 사용하며 도대체 어떻게 사용하는가?
- sequence of elements supporting sequential and parallel aggregate operations
순차적 또는 병렬적 집계 작업을 도와주는 요소들의 시퀀스 (영어를 잘 못함) 직역(?)하면 이러하다. 이러한 번역으로 볼 때, 단순히 데이터를 담고있는 저장소가 아님을 알 수 있다.
스트림은 데이터 소스를 변경하지 않고 스트림으로 처리하는 데이터는 오직 한번만 처리를 한다. 또한 스트림 파이프라인 안에서 처리되는 로직 구조로 인해 Lazy하다라고 말할 수 있다. ( Lazy하다? -> 미루고미루고미루는 ..?)
오퍼레이터
스트림에는 두가지 오퍼레이터가 있다.
- 중개 오퍼레이터
- 종료 오퍼레이터
중개 오퍼레이터
중개 오퍼레이터는 Stream return 한다. (ex.f filter, map, limit, skip, sorted...)
map을 통해 출력과 대문자로 바꾼 후, 출력을 시도하면 출력이 되지않는다. 여기서 필요한것이 바로 종료 오퍼레이터(collect)
종료 오퍼레이터
중개 오퍼레이터와 달리 Stream을 리턴하지 않으며 ( 위 코드에서는 List<String> 을 반환 ) 주로 collect, allMatch, count, forEach, min, max등이 있다.
또한 이러한 구조 때문에 병렬적인 처리가 가능하다.
스트림 API
그러면 Stream을 도대체 왜 사용하는지는 알았으니 , 어떻게 사용하는지 알아보자.
- Filter : 걸러내는 용도
- map : 형태를 바꾸는 용도
- generate 또는 iterate : 생성하는 용도 (ex> 10부터 1씩 증가.., 랜덤 int 무제한 스트림)
- limit 또는 skip : 최대 5개 요소 담긴 스트림을 리턴, 앞에서 3개를 뺀 나머지 리턴
- count : 개수를 세기
- reduce : 모든 데이터를 하나의 List에 옮겨 담기
이외에도 많지만 조금씩 수정 및 추가하겠다.
이것저것 문장을 만들어 연습을 해보도록 하자.
'IT > Java' 카테고리의 다른 글
Date와 Time API (0) | 2021.08.31 |
---|---|
Java Optional (0) | 2021.08.23 |
기본 메서드와 스태틱 메서드 (0) | 2021.08.03 |
Iterator/ListIterator/Enumeration 란? (0) | 2021.07.30 |
람다표현식&메소드 레퍼런스 (0) | 2021.07.26 |