Hello

Java 스트림(Stream), 스트림의 특징

by 볼빵빵오춘기

스트림(Stream)

  • 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것이다.
더보기

⇒ 여기서 ‘데이터 소스’는 컬렉션과 배열을 의미하고 ‘표준화된 방법’이라 함은 컬렉션 플레임웍을 들 수 있는데 컬렉션 프레임웍에는 List, Set, Map 이 있었다. 하지만 List, Set, Map이 사용방법이 달라 반쪽짜리 표준화방법이었다. 그래서 드디어 JDK1.8부터 스트림이 나와 정말로 진정한 통일 표준화 방법으로 다루게 됐다.

 데이터 소스마다 중간연산, 최종연산 과정이 다 달랐지만 스트림이 나오면서 통일됐다.

  • 스트림이 제공하는 기능 - 중간 연산과 최종 연산
    • 중간 연산
      연산결과가 스트림인 연산, 반복적으로 적용가능 (0~n번 작업가능)
    • 최종 연산
      연산 결과가 스트림이 아닌 연산. 단 한번만 적용가능(스트림의 요소를 소모) (0~1번 작업가능)

 

스트림(Stream)의 특징

  • 스트림은 데이터 소스로부터 데이터를 읽기만할 뿐 변경하지 않는다.
  • 스트림은 Iterator처럼 일회용이다.(필요하면 다시 스트림을 생성해야 함)
더보기

⇒ 이럴 경우 원본은 그대로 있으니 다시 만들어 사용하면 된다.

  • 최종 연산 전까지 중간 연산이 수행되지 않는다. - 지연된 연산
  • 스트림은 작업을 내부 반복으로 처리한다.
  • 스트림의 작업을 병렬로 처리 - 병렬스트림 (멀티쓰레드로 처리)
  • 기보현 스트림 - IntStream, LongStream, DoubleStream
    • 오토박싱 & 언박싱의 비효율이 제거되었다.(Stream<Integer> 대신 IntStream 사용)
    • 숫자와 관련된 유용한 메서드를 Stream<T>보다 더 많이 제공한다.

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기