DevBoi

[Java] Stream 본문

Language/[Java]

[Java] Stream

HiSmith 2022. 4. 1. 11:12
반응형

자바 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으로 데이터 가공도 가능

 

 

반응형