JAVA4_06_스트림
스트림 Stream
- 다양한 데이터 소스(컬렉션, 배열)를 표준화된 방법으로 다루기 위한 것
- 데이터의 흐름
- ✨✨①스트림 만들기 -> ②중간 연산(0~n번) -> ③최종 연산(0~1번) -> 결과
Stream<T> Collection.stream()
- Collection 인터페이스의 메소드
- ✨해당 컬렉션을 스트림으로 변환
중간 연산과 최종 연산
중간 연산
- 연산결과가 스트림인 연산
- 반복적으로 적용 가능
최종 연산
- 연산결과가 스트림이 아닌 연산
- 단 한번만 적용 가능 <- 스트림의 요소를 소모
예)
스트림의 특징
1. Read Only
- 스트림은 데이터 소스로부터 데이터를 읽기만할 뿐 변경하지 않는다.
2. 일회용
- 스트림은 Iterator처럼 일회용이다.
- 필요하면 다시 스트림을 생성해야 한다.
3. 지연된 연산
- 최종 연산 전까지 중간연산이 수행되지 않는다.
4. 내부 반복 처리
- 스트림은 작업을 내부 반복으로 처리한다.
이전엔)
for(String str : strList)
System.out.println(str);
->✨✨
stream.forEach(System.out::println);
5. 병렬트스림
-
멀티쓰레드로 스트림의 작업을 병렬로 처리한다.
-
빅데이터 작업을 위해 함수형 프로그래밍이 인기가 많아졌는데, 이 때문에 여러 쓰레드가 병렬로 처리하는 게(빠르니까) 유리해졌다.
-
parallel()
: 병렬 스트림으로 전환(속성만 변경) -
sequential()
: 직렬? 스트림으로, 반대로 전환. 디폴트
6. 기본형 스트림 - IntStream, LongStream, ...
- 오토박싱&언박싱의 비효율이 제거됨
Stream<Integer>
대신IntStream
사용- 숫자와 관련된 유용한 메소드를
Stream<T>
보다 더 많이 제공한다.Stream<T>
: 뭐가 올지 모르는 전체 타입을 받기에, 숫자 관련 메소드가 적다.count()
정도?
IntStream
, ... :count()
,sum()
,average()
, ...
Ref
Author And Source
이 문제에 관하여(JAVA4_06_스트림), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lecharl/JAVA0406저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)