-
[JAVA8] About Optional-2 / Optional에 대하여-2Backend/JAVA&JAVA8 2022. 5. 5. 13:51
Stream에서도 잠깐 다루었고, 차후 filter와 map에 대해서 다루게 되겠지만 Java에서 자료구조를 다루는 방식이 여러가지 입니다.
Optional은 Null을 다루는 기능인데에도 조건부로 출력할 가능성이 있을까요?
넵 있습니다.
모든 자료가 전부 자료구조에 담기지 않잖아요?
예를 들어 Java의 모든 자료가 List<String> someList 이런식으로 List에만 담기지 않듯
String, Integer에만 담기는 자료들도 있을 건데 그 자료형들도 모두 Optional로 처리할 일이 생기실 겁니다.
하나의 자료도 함수형언어 답게 filter를 걸어서 출력하고 / 안하고를 결정할 수 있습니다.
백문이 불여일타라고 아래 코드 살펴보시죠.
1.Optional + Filter
Optional<String> filterGender = Optional.of("MALE"); Optional<String> emptyGender = Optional.empty(); System.out.println(filterGender.filter(g -> g.equals("male"))); System.out.println(filterGender.filter(g -> g.equalsIgnoreCase("MALE"))); System.out.println(emptyGender.filter(g -> g.equals("MALE"))); System.out.println(emptyGender.filter(g -> g.equalsIgnoreCase("MALE")));
위 코드에서 equalIgnoreCase는 대소문자를 구별하지 않는다는 뜻의 메소드입니다.
위의 코드는 대략적으로 male, MALE과 같은 문자열을 지녔다면 반환하여 System.out.println을 탈 것입니다.
출력 결과는 아래와 같습니다.
Optional.empty Optional[MALE] Optional.empty Optional.empty
2.Optional + Map
Map은 아래와 같습니다.
Optional<String> nonEmptyGender = Optional.of("male"); Optional<String> emptyGender = Optional.empty(); System.out.println("비지 않았을때 Map Optional: " + nonEmptyGender.map(String::toUpperCase)); System.out.println("비었을때 Map Optional: " + emptyGender.map(String::toUpperCase)); System.out.println();
출력결과는 아래와 같습니다.
비지 않았을때 Map Optional: Optional[MALE] 비었을때 Map Optional: Optional.empty
오늘 포스팅은 너무 간단해서 조금 민망하네요.
그런데 위 코드들을 보시면, filter과 map의 차이점이 궁금하시지 않으신가요?
Optional에 대한 설명이 마무리 되었으니 다음 포스팅에서는 filter과 map의 차이점에 대하여 다루는 시간을 가져보도록 하겠습니다.
'Backend > JAVA&JAVA8' 카테고리의 다른 글