List 형태의 객체들의 null 체크 또는 개수가 존재하는지 확인(null과 isEmpty()의 차이)

2019. 12. 25. 00:343_개발/3_1_JAVA

개발할 때 객체에 값이 존재하는지 안 하는지에 따라서

다르게 처리 하는 경우가 많다.

 

그래서 값이 존재하는지 안 하는지

체크하는 로직이 필요한데 이럴 때 원래는 아래와 같은 방법을 상용한다.

 

list의 null을 체크하는 방법

List list = null;
		
if(list == null) {
    System.out.println("객체의 값이 존재하지 않아요.");
} else {
     System.out.println("객체의 값이 존재합니다.");
}
		

if로 list가 null인지 아닌지를 확인한 후에 null이 아닌 경우에는

처리하도록 로직을 개발하면 된다.

위와 반대의 경우도 가능하다.

 

if(list != null) 과 같이 null이 아닌 경우에는 처리하도록 하는 경우도 종종 있다.

 

위의 경우는 null에 대해서 체크하는 경우이고,

null 이외에 list를 정상적으로 선언하였는데 개수가 있는지 없는지 확인하는 경우도 종종 있다.

 

이런 경우에는 일반적으로 아래의 방법으로 확인하곤 했다. 

 

list.size()를 이용하는 방법

List<String> list = new ArrayList<String>();

if(list.size() > 0) {
	System.out.println("list의 개수가 0보다 크다. 목록이 존재한다.");
} else {
	System.out.println("이 list는 없다.");
}

위의 내용은 null을 체크한 이후에 개수가 0개보다 많은지를 확인하는 방법니다.

list의 size가 0보다 크면 처리하겠다는 내용으로 기존에는 이와 같은 방법을 많이 사용했었다.

 

그런데 위와 동일한 작업을 하는 메소드가 List 내에는 존재한다.

(실제로 정적 분석 툴인 소나 큐브는 위의 list.size()의 방식보다 아래의 방식을 더 추천한다.)

 

list.isEmpty()를 이용하는 방법

List<String> list = new ArrayList<String>();

if(list.isEmpty()) {
	System.out.println("list의 개수가 0보다 크다. 목록이 존재한다.");
} else {
	System.out.println("이 list는 없다.");
}

list.isEmpty()를 이용해도 위와 같이 list에 적재되어 있는 개수가 0개인지 아닌지 확인이 가능하다.

 

 

참고로 위의 isEmpty나 size는 null을 체크한 후에 이루어져야 하는 동작이다.

그러면 만약 list가 null인 상태에서 size나 isEmpty를 호출하면 

멋진 java.lang.NullPointerException 에러를 console 창에 감상할 수 있을 것이다. 

 

그러면 의문점이 list == null과 list.isEmpty()의 차이는 무엇인가?? 

아주 간단한 의문점이 들 수도 있다.

 

저 둘의 차이는

 

list가 null인 경우에는 list 변수가 그 어떤 주소 값도 참조하지 않은 상태를 의미한다.

다시 말하자면 인스턴스 생성되어 있지 않는 상태를 의미한다.

 

list.isEmpty()는 인스턴스는 생성되어 있지만, 또는 주소 값을 참조하고는 있지만

하지만 아무런 데이터가 적재되어 있지 않은 상태를 의미한다.