[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 의 모든 요소를 배열로 반환

참고


Tags:

Categories:

Updated:

Leave a comment