자바 8 - 스트림 API

GwanMtCat·2023년 8월 22일
0

스트림

  • 스트림 (Stream) 이란?
    • 데이터 처리 연산을 할 수 있도록 소스에서 추출된 연속된 요소

    • 연속된 요소
      • 특정 요소 형식으로 이루어진 연속된 값 집합의 인터페이스 제공

    • 소스
      • 스트림은 컬렉션, 배열, I/O 자원 등의 데이터 제공 소스로부터 데이터를 소비

    • 데이터 처리 연산
      • 스트림은 함수형 프로그래밍 언어에서 일반적으로 지원하는 연산과 데이터베이스와 비슷한 연산을 지원, 순차적 혹은 병렬로 실행 가능

    • 파이프라이닝
      • 스트림 연산끼리 연결해서 커다란 파이프라인 구성 가능하고 자신(스트림)을 반환
      • 데이터베이스 질의와 비슷

    • 내부 반복
      • 반복자를 이용해서 명시적으로 반복하는 컬렉션과 달리 스트림은 내부 반복을 지원

  • 컬렉션과 스트림의 차이?
    • 데이터를 언제 계산하느냐가 가장 큰 차이

    • 컬렉션은 현재 자료구조가 포함하는 모든 값을 메모리에 저장하는 자료구조

    • 반면 스트림은 이론적으로 요청할 때만 요소를 계산하는 자료구조,

    • 스트림은 한 번만 탐색 가능하여, 다시 탐색하려면 새로운 스트림을 생성해야 함

    • 데이터 반복처리 시 컬렉션은 외부 반복, 스트림은 내부 반복을 사용하여 데이터 표현과 하드웨어를 활용한 병렬성 구현을 자동으로 선택해야되는데 컬렉션은 병렬성을 스스로 관리 해야 함

스트림의 연산

  • 스트림 연산은 스트림 끼리 연결할 수 있는 중간 연산, 스트림을 닫는 최종 연산이 있음

    • 중간 연산의 중요한 특징은 단말 연산을 스트림 파이프라인에 실행하기 전까지는 아무 연산도 수행하지 않는다, 즉 게으르다.

    • 중간 연산을 합친 다음에 합쳐진 중간 연산을 최종 연산으로 한 번에 처리한다.

    • 최종 연산은 스트림 파이프라인에서 결과를 도출한다.

  • 스트림 이용 과정은 다음과 같이 세단계로 요약 가능하다.
    • 질의를 수행할 데이터 소스

    • 스트림 파이프라인을 구성할 중간 연산 연결

    • 스트림 파이프라인을 실행하고 결과를 만들 최종연산

0개의 댓글