JVM/Java

[Java] List Null 체크 하는 방법들

Hyo Kim 2021. 5. 30. 23:22
728x90
반응형

🙄서론

리스트 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
728x90
반응형