<Lambda> 5. JAVA8 in Action - Chapter 5
by BFine반응형
JAVA8 in Action - part2
Chapter 5 - 스트림 활용
5.1.0 필터링과 슬라이싱
- 데이터를 어떻게 처리할 것인지를 스트림 API가 알아서 처리한다.
- 필터링의 종류
- 프리디케이트 : boolean형을 인수로 받아 처리
distinct
: 중복을 제거limit
,skip
: 축소, 건너뛰기
5.2.0 매핑
map
과flatMap
을 통해 특정데이터를 선택 하는 작업을 할 수 있다.
5.2.1 스트림의 각 요소에 함수 적용하기
map
은 새로운 버전을 만든다 라는 변환에 가까운 매핑이다.- 출력으로 스트림형태 Stream 형식을 가진다.
map
은 다른map
과 연결이 가능하다.
5.2.2 스트림 평면화
-
“hello” , “world” 을 중복없이 쓰인 알파벳을 구하는 예제
위의 코드의 문제는 Stream
이 아닌 Stream<String[]> 을 반환한다. -
flatMap
과Arrays.stream()
으로 처리할 수 있다.Arrays.stream()
는 문자열을 스트림으로 반환한다. flatMap
는 스트림의 각 값을 다른 스트림으로 만들고 모든 스트림을 하나의 스트림으로 연결 하는 기능이다.-
아래 코드는 (1,2,3) (3,4)를 각 2개의 쌍으로 만드는 예제이다.
5.3.0 검색과 매칭
- 매칭에는
allMatch
,anyMatch
,noneMatch
,findFirst
,findAny
가 있다. (boolean 반환) - 쇼트서킷이란 원하는 결과를 얻었을때 전체스트림을 처리하지 않아도 반환할 수 있는 것을 말한다.
- Optional은 값의 존재,부재 여부를 표현하는 컨테이너 클래스이다.
- 병렬스트림에서
findFirst
는 찾기 어렵기 때문에 순서가 상관없다면findAny
를 사용한다.
5.4.0 리듀싱
- 결과가 나올때까지 스트림 모든 요소를 반복적 으로 처리해야 하는 것을 리듀싱 연산이라한다.
reduce
는 두개의 인수 초기값과 Operator를 가진다.- 초기값이 없는 경우는 Optional객체를 반환한다.
reduce
의 장점- 내부 구현으로 병렬화 처리를 할 수 있다.
sorted
같은 메서드는 과거 이력을 버퍼에 담아야하므로 모든 요소를 버퍼에 추가해야된다.(stateful operation)
5.5 실전 연습
- 학생 추출해보는 리스트 예제
5.6.1 기본형 스트림
map
으로 스트림을 생성할 경우sum
,min
등은 직접 호출할 수 없다.- 그래서 기본형 스트림을 제공한다.
IntStream
,mapToDouble
등 - 기본형 스트림을 다시 스트림으로 바꾸려면
boxed
를 사용하면 된다.
5.6.2 숫자범위
range
,rangeClosed
지원하고 각각 n제외, n포함이다.
5.7.1 스트림 만들기
Stream.of
를 사용하면 값으로 스트림을 만들 수 있다.Stream.empty
로 비울 수 있다.iterator
,generate
로 무한스트림을 생성할 수 있다.iterator
는 요청할 떄 마다 값을 생성할 수 있고 언바운드 스트림 이라고 부른다.generate
는 값을 연속적으로 계산하지 않는다. 불변상태 를 유지하고 싶을때 사용한다.(상태저장이 없다)무한스트림의 요소는 무한적으로 계산이 반복되기 때문에 정렬이나 리듀스 할 수 없다.
-
피보나치 수열
출처
- Java8 in Action
반응형
'개발서적 > 자바8 인 액션' 카테고리의 다른 글
<Lambda> 7. JAVA8 in Action - Chapter 7 (0) | 2019.04.03 |
---|---|
<Lambda> 6. JAVA8 in Action - Chapter 6 (0) | 2019.04.02 |
<Lambda> 4. JAVA8 in Action - Chapter 4 (0) | 2019.04.01 |
<Lambda> 3. JAVA8 in Action - Chapter 3 (0) | 2019.03.27 |
<Lambda> 2. JAVA8 in Action - Chapter 2 (0) | 2019.03.26 |
블로그의 정보
57개월 BackEnd
BFine