스트림(Stream)

0

JAVA - 자바의 정석 정리

목록 보기
102/104

스트림(Stream)

: 다양한 데이터소스(컬렉션, 배열 등)를 표준화된 방법으로 다루기 위한 것

  • List,Set,Map을 표준화된 방법으로 다루려고 컬렉션프레임워크로 정의했는데, list&set/map의 사용방법이 달라서 반쯤만 표준화됐다. 그러나 jdk1.8이후로 스트림이 나오면서 진짜 표준화 됨.
  • 스트림이 제공하는 기능 - 중간연산과 최종연산

    • 중간 연산 : 연산 결과가 스트림인 연산. 반복적으로 적용 가능
    • 최종 연산 : 연산 결과가 스트림이 아닌 연산. 단 한번만 적용가능 (스트림의 요소를 소모)
  • 스트림의 특징

    • 스트림은 데이터 소스로부터 데이터를 읽기만 할 뿐 변경하지 않는다.
      -> 변경하려면 새로 만들어서 저장해야함
    • 스트림은 iterator처럼 일회용이다. 필요하면 다시 스트림을 생성해야함.
    • 최종연산 전까지 중간연산이 수행되지 않는다 - 지연된 연산

      -> 코드만보면 말이 안됨. 무한스트림을 중복제거할 수 없는데, 지연된 연산때문에 가능하다.
    • 작업을 내부 반복으로 처리한다.

      -> forEach라는 최종연산으로 간단하게 쓸 수 있다.
    • 스트림의 작업을 병렬로 처리 - 병렬스트림 (멀티쓰레드로 병렬처리)
      -> 큰 작업을 실행할 때 이용 (ex, 빅데이터)
    • 기본형 스트림 - IntStream, LongStream, DoubleStream
      • 오토박싱 & 언박싱의 비효율이 제거됨 (Stream< Integer> 대신 IntStream 사용)
        -> 데이터소스가 기본형일 때 사용
      • 숫자와 관련된 유용한 메서드를 Stream< T>보다 더 많이 제공
profile
백엔드를 공부하고 있습니다.

0개의 댓글