설명 순서는 다음과 같습니다.

1. Stream이란
2. Stream의 특징
3. Stream의 장단점

1. Stream이란

   - 많은 수의 데이터를 다룰 때, 컬렉션이나 배열에 데이터를 담고 for문 또는 Iterator를 이용해서 코드를 작성했음. 그렇지만 이러한 방식은 가독성, 재사용성이 떨어지고, 데이터 소스마다 다른 방식으로 다뤄야하는 단점이 있음

   - 예를 들어, List를 정렬할 때는 Collections.sort()를 사용하고 배열을 정렬할 때는 Arrays.sort()를 사용해야 함

   - Stream은 데이터 소스가 무엇이던 간에 같은 방식으로 다룰 수 있도록 데이터 소스를 추상화하였고, 데이터를 다루는데 자주 사용되는 메소드들을 정의해 놓았음


2. Stream의 특징

   - 스트림은 데이터 소스를 변경하지 않음

      * 데이터 소스로 부터 데이터를 읽기만할 뿐, 원본 데이터 소스를 변경하지 않음

   - 스트림은 일회용임

      * 스트림은 한번 사용하면 닫혀서 다시 사용할 수 없음

   - 스트림은 작업을 내부 반복으로 처리함

      * 내부 반복이란 뜻은 반복문을 메소드 내부에 숨길 수 있다는 뜻임

      * 반복문을 숨김으로써 가독성이 높아짐

   - 지연된 연산

      * 스트림의 진행 순서는 생성 -> 중간연산 -> 최종연산으로 됨

      * 지연된 연산이란 최종연산이 수행되기 전까지 중간연산이 수행되지 않는다는 것

      * 최종연산이 수행되어야 비로소 스트림의 요소들이 중간연산을 거쳐 최종연산에서 소모됨

   - 병렬 처리가 쉽다

      * 병렬 처리를 하려면 단지 parellel() 메서드를 호출만 하면됨(다만 병렬처리가 항상 빠른 결과를 얻는 것은 아님)


3. Stream의 장단점

   - 장점

      ① 가독성이 높다

      ② 재사용성이 높다

      ③ 데이터소스에 관계없이 같은 방식으로 다룰 수 있다

      ④ 병렬 처리가 쉽다

   - 단점

      ① for문보다 성능이 대부분 떨어진다

         * 하지만, 복잡한 로직을 계산하는 비용이 순회하는 비용보다 크고 데이터의 양이 많다면 Stream의 성능은 for문과 비슷해지거나 더 좋아짐


Stream에 대해 알아볼 수 있었습니다.

 

'Java' 카테고리의 다른 글

JAR, WAR, EAR  (1) 2023.09.18
Garbage Collector  (0) 2023.09.15
JVM  (0) 2023.09.14
Abstract Class vs Interface  (0) 2023.09.13
[Java의 정석] Static이란?  (0) 2023.04.07

+ Recent posts