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>보다 더 많이 제공한다.
'👩🏻💻 About 프로그래밍 > Java' 카테고리의 다른 글
Java 스트림의 연산 (0) | 2023.12.11 |
---|---|
Java 스트림 만들기 (1) | 2023.12.11 |
Java 메서드 참조, 생성자의 메서드 참조 (0) | 2023.12.11 |
Java Predicate 결합. CF와 함수형 인터페이스 (1) | 2023.12.11 |
Java java.util.function 패키지 (0) | 2023.12.11 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기