JAVA/자바의 정석

[자바의 정석 - 기초편] 14. (4) 스트림의 중간 연산 ( skip, limit, filter, distinct, sorted, map, peek, flatMap / Optional<T> )

서영22 2024. 1. 3. 22:01

 스트림의 연산 

< 중간 연산 >

- n번 가능

- 스트림을 반환

 

 

< 최종 연산 >

- 1번 가능

- 스트림 요소 소모

- int, boolean, Optional을 반환

 

 

 

 스트림의 중간 연산 

- 스트림 자르기 : skip(), limit()

 

 

 

- 스트림 요소 걸러내기 : filter(), distinct()

 

 

 

- 스트림 정렬하기 : sorted()

 

 

- Comparator의 comparing()으로 정렬 기준을 제공

 

 

- 추가 정렬 기준을 제공할 때는 thenComparing()을 사용

 

 

 

- 스트림 요소 변환하기 : map()

 

 

 

- 스트림 요소를 소비하지 않고 엿보기 : peek()

 

 

 

- 스트림의 스트림을 스트림으로 변환하기 : flatMap()

 

 

 

 Optional<T> 

- T 타입 객체의 래퍼클래스 : Optional<T>

 

- 간접적으로 null 다루기 위한 것임

   1. null을 직접적으로 다루는 것은 위험 (NullpointException 발생 위험)

   2. 직접적으로 하면 null 체크 해야함 (if문 필수, 코드 지저분)

 

 

 

 Optional<T> 객체 생성하기 

 

 

 

 Optional<T> 객체의 값 가져오기 

 

 

< 예제 1 >

opt == "" 인 경우

 

 

 

 

< 예제 2 >

opt == "abc" 인 경우

 

 

 

 

 OptionalInt, OptionalLong, OptionalDouble 

- Optional<T> 보다 성능이 좋음

 

 

 

 

< 예제 >