어제 오늘 내일

[Java 기초] Collections.emptyMap()으로 비어있는 불변 Map 만들기 본문

IT/Java

[Java 기초] Collections.emptyMap()으로 비어있는 불변 Map 만들기

hi.anna 2025. 9. 7. 01:51

메서드의 반환 타입이 Map일 때, 실제 데이터가 없을 수도 있습니다.
이럴 때 null을 반환하면 호출하는 쪽에서 NullPointerException 위험이 있습니다.
따라서 안전하게 비어 있는 Map을 반환하는 것이 좋습니다.
이럴 때 Collections.emptyMap()을 사용하면 아주 간단합니다.
이 메서드는 아무 요소도 없는 불변(immutable) Map을 만들 때 사용합니다.

 

1. 기본 사용법

import java.util.*;

public class EmptyMapExample1 {
    public static void main(String[] args) {
        Map<String, String> empty = Collections.emptyMap();

        System.out.println(empty);
    }
}

실행 결과

{}

👉 아무 키-값 쌍도 없는 Map이 만들어졌습니다.

 

2. 수정 불가능한 Map

emptyMap()으로 만든 Map은 불변이기 때문에 수정할 수 없습니다.

import java.util.*;

public class EmptyMapExample2 {
    public static void main(String[] args) {
        Map<Integer, String> emptyMap = Collections.emptyMap();

        emptyMap.put(1, "apple"); // 수정 시도
    }
}

실행 결과 (예외 발생)

Exception in thread "main" java.lang.UnsupportedOperationException

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

 

3. 활용 예시

  • 메서드 반환값: 데이터가 없을 때 null 대신 반환
  • 안전한 초기화: 빈 맵으로 시작하면서 불변성을 보장
  • 불변 컬렉션 활용: 읽기 전용 빈 맵이 필요할 때

 

4. 주의할 점

  • Collections.emptyMap()은 항상 같은 인스턴스를 반환합니다. (싱글톤)
  • 객체 생성 비용이 없어 성능과 메모리 효율이 뛰어납니다.
  • 자바 9 이상에서는 Map.of()도 사용 가능하며, 빈 맵도 생성할 수 있습니다. (Map.of())

5

. 정리

  • Collections.emptyMap()
    👉 아무 요소도 없는 불변 Map 반환
  • 수정 시도 시 UnsupportedOperationException 발생
  • null 대신 반환하면 NPE를 예방할 수 있음

👉 값이 없는 Map을 반환할 때는 null 대신 Collections.emptyMap()을 쓰자!

 

 

반응형
Comments