설명 순서는 다음과 같습니다.
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 |