[Java] Stream API
Updated:
다양한 데이터를 표준화된 방법으로 다루기 위한 라이브러리
Stream API 란?
- 자바 8부터 추가
- 데이터를 추상화하여 다루므로, 다양한 방식으로 저장된 데이터를 읽고 쓰기 위한 공통된 방법을 제공
- 배열이나 컬렉션뿐만 아니라 파일에 저장된 데이터도 모두 같은 방법으로 다룰 수 있음
- 스트림은 생성, 중간연산, 최종연산으로 이루어지며 중간연산은 연속 수행이 가능하고 최종연산은 단 한번만 가능하다
-
사용
// 스트림 생성 stream() // 중간 연산 (스트림 변환) : 연속 수행 가능 ilter < - 중간 연산 (스트림 변환) // 최종 연산 (스트림 사용) : 마지막 한 번만 가능 example.stream().filter(x -> x < 2).count
특징
- 스트림은 원본 데이터를 변경하지 않는다
- 내부 반복을 통하여 작업을 수행한다
- 스트림의 연산은 필터-맵(filter-map) 기반의 API를 사용하여 지연(lazy) 연산을 통해 성능을 최적화
- 스트림은 재사용 가능한 컬렉션과 달리 단 한 번만 사용 가능하다
- parallelStream() 를 활용하여 병렬 처리를 쉽게 할 수 있다
종류
생성
명령어 | 설명 |
---|---|
Stream |
범용 Stream |
IntStream | 값 타입이 Int인 Stream |
LongStream | 값 타입이 Long인 Stream |
DoubleStream | 값 타입이 Double인 Stream |
중간 연산
명령어 | 설명 |
---|---|
Stream < T > distinct() | Stream의 요소 중복 제거 |
Stream < T > sorted() | Stream 요소 정렬 |
Stream < T > filter(Predicate < T > predicate) | 조건에 충족하는 요소를 Stream으로 생성 |
Stream < T > limit(long maxSize) | maxSize 까지의 요소를 Stream으로 생성 |
Stream < T > skip(ling n) | 처음 n개의 요소를 제외하는 stream 생성 |
Stream < T > peek(Consumer< T > action) | T타입 요소에 맞는 작업 수행 |
Stream < R > flatMap(Function< T, stream<? extends R» Tmapper) | T타입 요소를 1:N의 R타입 요소로 변환하여 스트림 생성 |
Stream < R > map(Function<? super T, ? extends R> mapper) | 입력 T타입을 R타입 요소로 변환한 스트림 생성 |
Stream mapToInt(),mapToLong(),mapToDobule() | 만약 map Type이 숫자가 아닌 경우 변환하여 사용 |
생성
명령어 | 설명 |
---|---|
void forEach(Consumer <? super T> action) | Stream 의 각 요소에 지정된 작업 수행 |
long count() | Stream 의 요소 개수 |
Optional < T > sum (Comparator <? super T> comparator) | Stream 의 요소 합 |
Optional < T > max (Comparator <? super T> comparator) | Stream 요소의 최대 값 |
Optional < T > min (Comparator <? super T> comparator) | Stream 요소의 최소 값 |
Optional < T > findAny() | Stream 요소의 랜덤 요소 |
Optional < T > findFirst() | Stream 의 첫 번째 요소 |
boolean allMatch(Pradicate < T > p) | Stream 의 값이 모두 만족하는지 boolean 반환 |
boolean anyMatch(Pradicate < T > p) | Stream 의 값이 하나라도 만족하는지 boolean 반환 |
boolean noneMatch(Pradicate < T > p) | Stream 의 값이 하나라도 만족하지않는지 boolean 반환 |
Object[] toArray() | Stream 의 모든 요소를 배열로 반환 |
참고
- https://www.tcpschool.com/java/java_stream_concept
- https://khj93.tistory.com/entry/JAVA-람다식Rambda란-무엇이고-사용법
Leave a comment