스트림이란?

sion Jeong·2024년 7월 9일
1

스트림 핵심

  • 컬렉션과, 배열을 → 표준화된 방법으로 다루기 위한 것 (쉽게 다루자)
  • 스트림은 데이터를 읽기만 할 뿐 변경하진 않는다. (하지만 기본형 스트림 이라면?)
  • IntStream 반환타입 기본형 스트림은 인자가 숫자이기 때문에 -> 카운트 이외의 더하기 , 평균 구하기 등이 가능하다. (계산가능)
    • 기본형 스트림 ⇒ IntStream, LongStream, DoubleStream
  • Stream<T> 반환타입이 객체인 스트림은 → 인자의 타입이 뭔지 알수없으니 최종연산에 카운트밖에 못센다.
    예시 Stream<String>

스트림이란?

💡 다양한 데이터소스를(컬렉션, 배열) → 표준화된 방법으로 다루기 위한 것이다.
스트림은 데이터를 읽기만 할 뿐 변경하진 않는다.
컬렉션과 배열을 스트림으로 → 간편하게 처리하기 위함 (반복작업을)

스트림의 3단계

  1. 스트림 만들기
  2. 중간연산(여러번 가능)
  3. 최종연산(1번만 가능)

스트림이 제공하는 기능

  • 중간 연산 : 연산결과가 스트림, 반복적으로 적용가능
  • 최종 연산 : 연산결과가 스트림이 아닌 연산, -> 스트림을 사용하기때문에 단 한번만 적용가능

스트림의 특징

💡 데이터소스(원본)로부터 → 데이터를 읽기만 할 뿐 변경하진 않는다.

  • 원본을 건드리지 않는다, 변경없음
  • 읽기만 한다.

💡 스트림은 일회용이다

  • 한번쓰면 → 다시 스트림을 생성해서 사용해야한다
  • 원본은 그대로있으니(변경안함) → 다시 만들어서 쓰면 된다.

💡최종연산 전까지 중간연산이 수행되지 않는다 → 지연연산, 지연로딩

💡 작업을 내부 반복으로 처리한다.

  • 내부반복 = 반복문을 메서드의 내부에 숨겼다(코드 간결의 장점 때문에, 성능은 비효율)

💡 작업을 병렬로 처리 - 병렬스트림이다

  • 멀티쓰레드로 처리한다는것

💡 기본형 스트림 ⇒ IntStream, LongStream, DoubleStream

  • 오토박싱&언박싱의 비효율이 제거되었다 (Stream< Integer>대신 → IntStream 사용)
    • 기본형 1 을 → new Integer(1) 이런식으로 오토박싱하고
      나중에 언박싱해야하는 비효율이 사라졌다
    • 기본형 → 객체로 바꾸고 → 다시 기본형으로 바꿔줘야하는 번거로움
profile
개발응애입니다.

0개의 댓글