Java/객체지향

[객체지향][스트림/Stream] - 스트림, 스트림의 특징

얄루몬 2022. 3. 15. 21:41

https://youtu.be/7Kyf4mMjbTQ?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 

📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다.


[스트림]

  • 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것이다.
    • 데이터 소스 - 컬렉션, 배열
    • 표준화된 방법 - List, Set, Map

1. 스트림 만들기 --> 2. 중간 연산 --> 3. 최종 연산 

[스트림 특징]

  • 스트림은 데이터 소스로부터 데이터를 읽기만할 뿐 변경하지 않는다.
  • 스트림은 Iterator처럼 일회용이다. (필요하다면 다시 스트림을 생성해야 한다.)
  • 최종 연산 전까지 중간연산이 수행되지 않는다. - 지연된 연산
  • 스트림은 작업을 내부 반복으로 처리한다.
  • 스트림의 작업을 병렬로 처리 - 병렬스트림(멀티쓰레드)
  • 기본형 스트림 - IntStream, LongStream, DoubleStream
    • 오토박싱 & 언박싱의 비효율이 제거됨(Stream<Integer> 대신 IntStream 사용한다.)
    • 숫자와 관련된 유용한 메서드를 Stream<T>보다 더 많이 제공한다.