기본형 특화 스트림
스트림API는 박싱 비용을피할 수 있도론 각 기본형에 특화된 스트림을 제공합니다.
IntStream, LongStrea, DoubleStream이 있습니다.
스트림을 특화 스트림으로 변환할 때는 mapToInt, mapToDouble, mapToLong 세가지 메서드를가장 많이 사용합니다.
int calories = menu.stream()
.mapToint(Dish::getCalories)
.sum();
각각의 인터페이스는 sum, max, min 같이 자주 사용ㅎ되는 리듀싱 연산 메서드가 있습니다.
필요할때마다 객체 스트림으로 복원하는기능도 제공합니다.
기본형 특화 스트림은 오직 박싱과정에서 일어나는 효율성과 관련이 있으며 스트림에 추가 기능을 제공하지 않습니다!
상태 없는 연산, 상태 있는 연산
map,filter 등은 입력스트림에서 각 요소를 받아 0 또는 결과를 출력 스트림으로 보냅니다.
이들은 보통 상태가 없는, 즉 내부 상태를갖지 않는 연산입니다.
하지만 reduce, sum, max 같은 연산은 결과를누적할내부 상태가 필요합니다.
그리고 내부 상태의 크기는 한정되어있습니다.
반면 sorted, distinct같은 연산은 과거의 이력을 알고 있어야 합니다.
즉, 모든 요소가 버퍼에 추가되어 있어야 합니다.
연산을 수행하는데 필요한 저장소의 크기는 정해져 있지 않기 때문에 크키가 크거나 무한이라면 문제가 생길 수 있습니다.
이러한 연산을 내부 상태를갖는 연산이라고 합니다.
takeWhile, dropWhile
정렬이 되어있을때 takeWhile, dropWhile을 통해 쇼트서킷 방식으로 효과적인 탐색이 가능합니다.
쇼트서킷
결과를 찾는 즉시 반환하며, 전체 스트림을 처리하지 않습니다.
메서드 : findFirst, findAny, anyMatch
'Books > Modern Java In Action' 카테고리의 다른 글
[모던 자바 인 액션] Chapter7. 병렬 스트림 (0) | 2023.08.03 |
---|---|
[모던 자바 인 액션] Chapter4. 스트림 vs 컬렉션 (0) | 2023.07.26 |
[모던 자바 인 액션] Chapter4. 스트림 소개 (0) | 2023.07.26 |
[모던 자바 인 액션] Chapter3. 람다 표현식 (0) | 2023.07.25 |
[모던 자바 인 액션] Chapter3. 동작파라미터화 코드 전달하기 (0) | 2023.07.22 |
기본형 특화 스트림
스트림API는 박싱 비용을피할 수 있도론 각 기본형에 특화된 스트림을 제공합니다.
IntStream, LongStrea, DoubleStream이 있습니다.
스트림을 특화 스트림으로 변환할 때는 mapToInt, mapToDouble, mapToLong 세가지 메서드를가장 많이 사용합니다.
int calories = menu.stream()
.mapToint(Dish::getCalories)
.sum();
각각의 인터페이스는 sum, max, min 같이 자주 사용ㅎ되는 리듀싱 연산 메서드가 있습니다.
필요할때마다 객체 스트림으로 복원하는기능도 제공합니다.
기본형 특화 스트림은 오직 박싱과정에서 일어나는 효율성과 관련이 있으며 스트림에 추가 기능을 제공하지 않습니다!
상태 없는 연산, 상태 있는 연산
map,filter 등은 입력스트림에서 각 요소를 받아 0 또는 결과를 출력 스트림으로 보냅니다.
이들은 보통 상태가 없는, 즉 내부 상태를갖지 않는 연산입니다.
하지만 reduce, sum, max 같은 연산은 결과를누적할내부 상태가 필요합니다.
그리고 내부 상태의 크기는 한정되어있습니다.
반면 sorted, distinct같은 연산은 과거의 이력을 알고 있어야 합니다.
즉, 모든 요소가 버퍼에 추가되어 있어야 합니다.
연산을 수행하는데 필요한 저장소의 크기는 정해져 있지 않기 때문에 크키가 크거나 무한이라면 문제가 생길 수 있습니다.
이러한 연산을 내부 상태를갖는 연산이라고 합니다.
takeWhile, dropWhile
정렬이 되어있을때 takeWhile, dropWhile을 통해 쇼트서킷 방식으로 효과적인 탐색이 가능합니다.
쇼트서킷
결과를 찾는 즉시 반환하며, 전체 스트림을 처리하지 않습니다.
메서드 : findFirst, findAny, anyMatch
'Books > Modern Java In Action' 카테고리의 다른 글
[모던 자바 인 액션] Chapter7. 병렬 스트림 (0) | 2023.08.03 |
---|---|
[모던 자바 인 액션] Chapter4. 스트림 vs 컬렉션 (0) | 2023.07.26 |
[모던 자바 인 액션] Chapter4. 스트림 소개 (0) | 2023.07.26 |
[모던 자바 인 액션] Chapter3. 람다 표현식 (0) | 2023.07.25 |
[모던 자바 인 액션] Chapter3. 동작파라미터화 코드 전달하기 (0) | 2023.07.22 |