14. 스트림
다양한 데이터 소스(컬렉션, 배열)를 표준화된 방법으로 다루기 위한 것
Collections Framework의 사용방법이 드디어 통일됨
JDK 1.8에 나옴
15. Collection을 Stream으로 변환할 수 있음
Stream<Integer> intStream = list.stream();
16. 스트림 사용법
1) 스트림 만들기
2) 중간 연산을 n번 수행하기
3) 최종 연산 1번해서 결과 얻기
17. 스트림의 특징
1) 스트림은 데이터 소스로부터 데이터를 읽기만할 뿐 변경하지 않는다.
2) 스트림은 Iterator처럼 일회용이다.(필요하면 다시 스트림을 생성해야 함)
3) 스트림은 최종 연산 전까지 중간연산이 수행되지 않는다. (지연된 연산)
지연된 연산이기 때문에 무한 스트림도 사용할 수 있다.
IntStream intStream = new Random().ints(1,46); // 무한 스트림.. 랜덤값을 무한히 내보낸다.
intStream.distinct().limit(6).sorted() // 중간연산
.forEach(i->System.out.print(i+",")); // 최종연산
4) 스트림은 작업을 병렬로 처리할 수 있다. (병렬 스트림)
함수형 프로그래밍은 빅데이터 분야에서 큰 작업들을 빨리 처리할 수 있어서 인기가 있다.
int sum = strStream.parallel()
.mapToInt(s -> s.length()).sum(); // 모든 문자열의 길이의 합
5) 기본형 스트림을 제공한다.
IntStream, LongStream, DoubleStream
오토박싱&언박싱의 비효율이 제거됨 (Stream<Integer> 대신 IntStream 사용)
숫자와 관련된 유용한 메서드를 Stream<T>보다 더 많이 제공
반응형
'Knowledge Wiki > Java' 카테고리의 다른 글
JAVA 스트림 중간 연산, map(), flatmap(), sorted() (0) | 2021.12.02 |
---|---|
JAVA 람다식 iterate(), generate() (0) | 2021.12.02 |
JAVA 메서드 참조 (0) | 2021.12.01 |
JAVA 함수형 인터페이스, function 패키지 (0) | 2021.12.01 |
JAVA 람다식 (0) | 2021.12.01 |