티스토리 뷰

● 도입

Optional<T> findFirst();
Optional<T> findAny();

findFirst
- 현재 Stream 안의 데이터 중 가장 첫번째(맨 앞의) 데이터를 반환한다.
- Stream이 비어있다면 비어있는 Optional을 반환
- 따라서 findFirst method의 반환 타입은 Optional이다.

findAny
- 현재 Stream 안의 데이터 중 아무 데이터나 한 개 리턴한다. 그렇기에 실행 때마다 값이 달라진다.
- 순서가 중요하지 않고 Parallel Stream을 사용할 때 최적화를 할 수 있다.
- Stream이 비어있다면 빈 Optional을 반환
- 따라서 findAny method의 반환 타입은 Optional이다.

 

 

● 실습

- 보통 findFirst method와 findAny method는 filter method와 연계해 사용한다.

package com.fastcampus.functionalprogramming.chapter8;

import java.util.Optional;
import java.util.stream.Stream;

public class Chapter8Section3 {
	public static void main(String[] args) {
		Optional<Integer> anyNegativeInteger = Stream.of(3, 2, -5, 6).filter(x -> x < 0).findAny();
		System.out.println(anyNegativeInteger.get());
		
		
		Optional<Integer> firstPositiveInteger = Stream.of(-3, -2, -5, 6).filter(x -> x > 0).findFirst();
		System.out.println(firstPositiveInteger.get());
	}
}

'Backend > Java8' 카테고리의 다른 글

#28 Advanced Stream - Collectors  (0) 2022.10.17
#27 Advanced Stream - Reduce  (0) 2022.10.16
#25 Advanced Stream - All Match / Any Match  (0) 2022.10.14
#24 Advanced Stream - Max / Min / Count  (0) 2022.10.13
#23 Optional 응용 method  (0) 2022.10.12
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함