🙄서론
리스트 null을 체크하는 방식이 여러 방법이 있어서 정리할 겸 작성한다.
소개할 List null 체크 방식은 아래와 같다.
- xxxxList == null
- xxxxList.size() == 0
- xxxxList.isEmpty()
- CollectionUtils.isEmpty(xxxxList)
테스트 방식은 2가지로 나눠서 할 예정이다.
1. List가 null일 경우
2. List가 생성된 경우
😀테스트 코드
@Test
@DisplayName("nullList체크")
void nullListTest() {
List<String> nullList = null;
assertTrue(); // 코드작성
}
@Test
@DisplayName("newList체크")
void newListTest() {
List<String> newList = new ArrayList<>();
assertTrue(); // 코드작성
}
1. xxxxList == null
이 방식은 List가 null이면 원하는 결과를 얻을 수 있지만,
list가 인스턴스가 생성이 되었거나 [] 처럼 빈값일 경우에도 True를 얻고 싶었다면
원하던 방식으로 동작하지 않는다.
2. xxxxList.size() == 0
size()로 비교하게 될 경우 List가 null일 때에는 java.lang.NullPointerException 가 발생한다.
3. xxxxList.isEmpty()
이 방식 또한 List가 null일 경우에는 java.lang.NullPointerException 가 발생한다.
4. CollectionUtils.isEmpty(xxxxList)
이번에 사용한 방식은
org.springframework.util 라이브러리에서 제공하는 CollectionUtils.isEmpty() 를 사용하였다.
위와 같은 방식으로 null 체크를 해준다.
null을 먼저 체크 하고 or로 isEmpty()로 null을 체크하는 방식으로
null일 경우 java.lang.NullPointerException 가 발생하는 것을 방지했다.
😏결론
뭐 상황에 따라서 환경에 따라서 라이브러리를 사용하지 않고 바로 null 체크를 할 수 도 있지만,
java.lang.NullPointerException 가 발생할 수 있는 방식은 별로 좋지 못한 방식인 것 같다.
결론적으로 List 에서 null 체크와 빈값을 모두 체크하고 싶은 경우 CollectionUtils.isEmpty()를
사용하는 것이 가장 좋은 방식인 것 같다.
PS
xxxxList.isEmpty()는 시간복잡도가 O(1)이지만,
xxxxList.size()는 O(n)이 발생하게 된다.
size()로는 정말 크기가 필요한 경우가 아니라 null 체크하는 경우에는 별로 좋지 못한 것 같다.
참고, 인용 사이트
https://jihyehwang09.github.io/2020/04/13/java-list-null-check/
https://woo-yaa.tistory.com/16
'JVM > Java' 카테고리의 다른 글
[Java]Collections.emptyList() vs. new instance 어떤 차이가 있을까? (0) | 2021.06.06 |
---|---|
[Java]for문 List를 Null 체크하는 방법 (0) | 2021.06.06 |
[Java] 자바10부터 나온 var (0) | 2021.05.16 |
[Java] Optional – orElse() vs orElseGet() 차이점 알고 쓰자. (0) | 2021.05.16 |
[Java] Map getOrDefault 를 활용하자. (0) | 2021.05.09 |