코드 indent(들여쓰기)를 최소화하기 위해서 filter를 사용하면서 github에 commit하려던 와중에 아래 메시지가 발생했다.
자바 List 컬렉션에서 Stream api를 통해 특정 조건을 만족하는 원소가 하나라도 있다면~ 의 작업을 해주기 위해
아래와 같이 코드를 짰었다.
일단 stream api를 통해 위와 같이 코드를 작성한 결과
for문 -> if문이 요구되는 indent 2로 원소를 뽑아내는 대신, indent 0으로 간단하게 해당 원소를 뽑아낼 수 있었다.
그런데 똑똑한 인텔리제이는 코드를 보며 아래와 같이 말한다.
인텔리제이: 어차피 count()로 개수 파악하려고 하는 것이 아닌, 존재하는지만 파악하려면 anyMatch 키워드를 써봐~
오... anyMatch?
위 코드를 아래와 같이 바꿨다.
Stream().filter().count() > 0 으로 했었던 과거에 비해
Stream().anyMatch() 로 코드가 간단해진 것을 볼 수 있다.
또한, anyMatch() 자체는 타입형이 boolean이기 때문에 >0과 같이 조건문으로 처리할 필요가 없다는 점!
비슷한 예로 allMatch가 있다.
allMatch는 filter의 조건을 모든 원소가 만족할 경우 특정 로직을 실행하고 싶을 때 사용하면 된다.
Stream과 Filter, max, min에 더불어 anyMatch라는 기능도 알게 됐다.
java, js, python이 아무래도 좀 더 high level 언어이다보니 c/c++보다 유지보수/생산성 쪽으로 편리한 기능들이 많은 것 같다.
'JAVA > JAVA | Spring 학습기록' 카테고리의 다른 글
[ERROR] 스프링 어노테이션 인식이 안될 때 (2) | 2021.12.25 |
---|---|
[211219] 유스콘 2021 웨비나 컨퍼런스를 듣고 왔다 (3) | 2021.12.19 |
[JAVA] JDK 환경설정 / WARNING: An illegal reflective access operation has occurred 경고 해결 (7) | 2021.11.26 |
[Spring+React] 스프링과 리액트 연동해보기 (IntelliJ + Spring + Gradle + React) (2) | 2021.11.15 |
[211004] [일기] 프로젝트를 위한 스프링 검증파트 공부중... (0) | 2021.10.04 |