728x90
반응형
Optional
1) JDK 8에서 도입된 클래스. 함수형 프로그래밍
2) 값이 있을 수도 있고 없을 수도 있는(Nullable) 객체를 감싸고 있는 Wrapper 클래스
3) NullPointerException을 방지 코드의 안정성과 가독성을 높일 수 있음
4) 메소드의 리턴값이나 컬렉션 등에서 사용되며 값이 없을 수도 있는 상황에서 명시적으로 처리할 때 유용함
Optional.findAny
1) parallelStream(병렬 스트림)에서 주로 사용
2) 여러 개의 요소를 가진 Stream에서 무작위 값을 리턴
3) 여러 스레드가 동시에 작업할 때 유용
Optional.findFirst
1) Stream(순차 스트림/일반적)에서 주로 사용
2) Stream의 첫번째 값을 리턴
3) parallelStream에서는 성능상 이점이 없을 수 있음
import java.util.Optional;
import java.util.regex.Pattern;
public class OptionalFindAPI {
public static void main(String[] args) {
String inputString = "apple;orange;banana;grape;kiwi";
/*
* Pattern.compile()과 splitAsStream() 메소드를 사용해
* 문자열을 잘라 Stream<String> 타입의 인스턴스를 생성
* 1.findAny는 병렬 스트림으로 처리되어 무작위 값을 리턴
* 2.findFirst는 맨 첫번째 요소인 'apple'을 리턴
*/
Optional<String> anyElement =
Pattern.compile(";").splitAsStream(inputString)
.parallel()
.findAny();
Optional<String> firstElement =
Pattern.compile(";").splitAsStream(inputString)
.findFirst();
// 결과
System.out.println("findAny(): " + anyElement.orElse("No element"));
System.out.println("findFirst(): " + firstElement.orElse("No element"));
}
}
CONSOLE
findAny(): apple
findFirst(): apple
728x90
반응형
'백엔드 > 자바' 카테고리의 다른 글
[자바/Gradle] build.gradle dependency Configuration (0) | 2024.05.12 |
---|---|
[백엔드/Java] HTTP통신 JSON 데이터 요청 및 응답 처리 개념 및 샘플코드 (0) | 2023.10.03 |
[BE/Java] JSON To DTO 파싱 개념 및 샘플코드 (0) | 2023.08.19 |
[BE/Java] Optional 개념 및 샘플코드 (0) | 2023.07.26 |
[BE/Java] Stream.map().collect() 개념 및 샘플코드 (0) | 2023.07.22 |
댓글