자바

[JAVA] 스트림(Stream)

ChaeHing 2023. 3. 10. 02:27

스트림(Stream)

  • 배열, 컬렉션의 요소를 하나씩 참조하여 람다식으로 처리 할 수 있도록 해주는 반복자
  • 컬렉션, 배열등 다양한 데이터 소스들을 스트림으로 만들어 표준화된 방법으로 다룰수 있다.
  • 이러한 데이터 소스를 다루기위한 풍부한 메서드들을 제공한다.

스트림의 도입 배경

  • 자바 배열과 컬렉션등의 자료구조를 통해 데이터를 효과적으로 다루기 위하여 for문과 Iterator를 활용했었다.
  • 이러한 기존 방식의 문제점이 있다.
    1. 코드가 길고 복잡해 질수 있다.
    2. 데이터 소스를 각기 다른 방식으로 다뤄야 했다.
  • 이러한 문제점을 해결하기 위해 스트림은 이런 방식으로 다뤄진다.
    1. 선언형 프로그래밍 방식으로 데이터를 처리를 보다 인긴친화적이고 직관적인 코드 작성 가능
    2. 데이터 소스가 무엇이냐에 관계없이 같은 방식으로 데이터를 가공/처리 가능 - 하나의 통합된 방식(표준화)

 

스트림의 특징

  1. 처리 과정은 생성, 중간 연산, 최종 연산 세 단계의 파이프라인으로 구성될 수 있다.
  2. 원본 데이터 소스를 변경하지 않는다.(read-only)
  3. 일회용이다. (ontime-only)
  4. 내부 반복자이다.