- 스트림이란 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소
- 중간연산
- 최종연산
- .filter(Language::isJava)
- .filter(i -> i % 2 == 0)
- .distinct()
- .limit(10)
- .skip(5)
- .map(Person::getAge)
- .map(String::length)
- .map(x -> x * 2)
- 스트림의 각 요소를 다른 스트림으로 만든 후, 모든 스트림을 하나의 스트림으로 연결
- .flatMap(Arrays::stream)
- .anyMatch(Language::isJava)
- .allMatch(p -> p.getAge() < 30)
- .noneMatch(p -> p.getAge() < 30)
- 하나라도 거짓이면 나머지 표현식은 체크하지 않고 결과를 반환하는 상황을 뜻하는 말
anyMatch, allMatch, noneMatch, limit등은 쇼트 서킷
- .findAny()
- 아무 요소도 반환하지 않을 수 있으므로, null 대신
Optional<T>을 반환
- Optional 반환
- .findFirst()
- null 대신 사용
| 메소드 | 설명 |
|---|---|
| isPresent() | 값이 있는지 체크 |
| ifPresent(Consumer block) | 값이 있으면 주어진 블록 실행 |
| T get() | 값이 있으면 반환, 없으면 NoSuchElementException발생 |
| T orElse(T other) | 값이 있으면 반환, 없으면 기본값 반환 |
- 모든 스트림 요소를 처리하여 값 도출
int sum1 = numbers.stream().reduce(0, (a, b) -> a + b);
// 초기값이 없는 경우
Optional<Integer> sum2 = numbers.stream().reduce((a, b) -> a + b);Optional<Integer> max = numbers.stream().reduce(Integer::max);