일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자료구조공부
- 기술면접공부
- K8S
- 코테준비
- Kafka
- DDD
- Flutter
- 스프링부트
- 알고리즘공부
- JPA 공부
- 스프링공부
- JPA스터디
- nestjs공부
- 자바공부
- 플러터 개발
- 스프링
- nestjs스터디
- 코테공부
- 기술공부
- Axon framework
- 스프링부트공부
- 카프카
- querydsl
- 스프링 공부
- JPA
- JPA공부
- nestjs
- 플러터 공부
- JPA예제
- 프로그래머스
- Today
- Total
DevBoi
[Java] Stream 본문
자바 8에서 추가된 Optional과 Stream에 대해서 공부를 해보자
공부 관련 실습해보기 전에 간단하게 특징 및 장단점을 정리해보자
-특징
Java를 이용해 함수형 프로그래밍할 수있게 API를 제공해준다.
장점
원본의 데이터에 변경없이 가공할 수있다.
메서드체이닝을 통해 가공이 가능, 코드량을 줄이고 간결하게 표현이 가능하다.
병렬처리가 가능하다, 쓰레드를 이용해 많은 요소를 빠르게처리 가능
단점
함수형 프로그래밍이 너무 많아지면, 다수의 개발자가 운영 및 관리에 어려움이 따를수 있음(함수형 프로그래밍은 자바 표준 개발 방식이 아니라 익숙하지 않은 개발자들이 존재할수 있음)
- 생성하기
- 배열 / 컬렉션 / 빈 스트림
- Stream.builder() / Stream.generate() / Stream.iterate()
- 기본 타입형 / String / 파일 스트림
- 병렬 스트림 / 스트림 연결하기
Wapper타입 뿐아니라 기본타입에 대해서도 사용이 가능하다.
병렬 스트림은 아래와 같다.
병렬 시퀀스와 단순 시퀀스는 이렇게 서로 왔다갔다 할수 있다.
쓰레드를 많이 써서, 무조건 좋은 방향은 아니니까. 때메 맞춰서 사용하는 것이 좋다고한다.
위와 같이 두개의 스트림을 서로 연결할 수도 있다고한다.
fitler, map 사용 법이다.
필터랑 map은 말그대로 거르거나, 매핑 해주는 것이다.
2차원 배열이나, 더 복잡한 배열에 대해서 Stream 처리를 해주는 flatmap도 존재한다.
flatMap은 중첩 컬렉션에 대한 걸 제거해줄때, 즉, map의 리턴타입이 리스트일때 사용한다
sorting
limit , skip도 사용가능하다. 단 여기서 주의 할점은
limit 는 index번호가 아니라, 데이터 개수이다.
peek 중간 확인
collect
Join으로 데이터 가공도 가능
'Language > [Java]' 카테고리의 다른 글
[Java] CheckedException, UncheckedException (0) | 2022.04.05 |
---|---|
[Java] Enum 추상 클래스 (0) | 2022.04.05 |
[Java] 옵저버 패턴 (0) | 2022.03.30 |
[Java] 팩토리 디자인 패턴 (0) | 2022.03.30 |
[Java] lombok의 setter/getter 메소드 생성 시점문의 (0) | 2022.03.30 |