어제 오늘 내일

[Java 기초] Collections.emptyList()로 비어있는 불변 리스트 만들기 본문

IT/Java

[Java 기초] Collections.emptyList()로 비어있는 불변 리스트 만들기

hi.anna 2025. 9. 6. 01:49

리스트를 리턴해야 하지만 실제로는 아무 값도 없을 때가 있습니다.
이럴 때 null을 반환하는 것보다, 비어있는 리스트를 반환하는 것이 더 안전합니다.
자바에서는 Collections.emptyList()를 사용하면 간단하게 처리할 수 있습니다.
이 메서드는 아무 요소도 없는 불변(immutable) 리스트를 만들 때 사용합니다.

 

1. 기본 사용법

import java.util.*;

public class EmptyListExample1 {
    public static void main(String[] args) {
        List<String> empty = Collections.emptyList();

        System.out.println(empty);
    }
}

실행 결과

[]

👉 아무 요소도 없는 리스트가 만들어졌습니다.

 

2. 수정 불가능한 리스트

emptyList()로 만든 리스트는 불변이기 때문에 수정할 수 없습니다.

import java.util.*;

public class EmptyListExample2 {
    public static void main(String[] args) {
        List<Integer> emptyNumbers = Collections.emptyList();

        emptyNumbers.add(1); // 수정 시도
    }
}

실행 결과 (예외 발생)

Exception in thread "main" java.lang.UnsupportedOperationException

👉 요소 추가, 삭제, 교체 모두 불가능합니다.

 

3. 활용 예시

  • 메서드 반환값: 결과가 없을 때 null 대신 반환
  • 안전한 초기화: 리스트를 초기화하면서 비어 있는 상태 유지
  • 불변 컬렉션 활용: 읽기 전용 빈 리스트가 필요할 때

 

4. 주의할 점

  • Collections.emptyList()는 항상 같은 인스턴스를 반환합니다. (싱글톤)
  • 따라서 불필요하게 객체를 새로 만들지 않아 효율적입니다.
  • 자바 9 이상이라면 List.of()도 비슷한 역할을 합니다. (List.of()도 빈 리스트 생성 가능)

 

5. 정리

  • Collections.emptyList()
    👉 비어 있는 불변 리스트 반환
  • 수정 시도 시 UnsupportedOperationException 발생
  • null 대신 반환하면 NPE 방지 가능

👉 결과가 없을 때는 null 대신 Collections.emptyList()를 반환하자!

 

 

반응형
Comments