어제 오늘 내일

[Java 기초] Collections.singletonMap()으로 단일 요소 불변 Map 만들기 본문

IT/Java

[Java 기초] Collections.singletonMap()으로 단일 요소 불변 Map 만들기

hi.anna 2025. 9. 8. 01:54

때로는 Map이 필요하지만 실제로는 키-값 쌍이 하나만 있어야 할 때가 있습니다.
예를 들어 API 호출에 Map<String, String> 타입이 필요하지만 값이 딱 하나라면, 굳이 HashMap을 만들 필요가 없죠.
이럴 때 Collections.singletonMap()을 쓰면 간단하고 안전하게 처리할 수 있습니다.
이 메서드는 하나의 키-값 쌍만 가진 불변(immutable) Map을 만들 때 사용합니다.

 

1. 기본 사용법

import java.util.*;

public class SingletonMapExample1 {
    public static void main(String[] args) {
        Map<String, String> country = Collections.singletonMap("KR", "Korea");

        System.out.println(country);
    }
}

실행 결과

{KR=Korea}

👉 "KR" -> "Korea" 하나만 담긴 불변 Map이 만들어졌습니다.

 

2. 수정 불가능한 Map

singletonMap()으로 만든 Map은 불변이므로 수정할 수 없습니다.

import java.util.*;

public class SingletonMapExample2 {
    public static void main(String[] args) {
        Map<Integer, String> user = Collections.singletonMap(1, "Alice");

        user.put(2, "Bob"); // 수정 시도
    }
}

실행 결과 (예외 발생)

Exception in thread "main" java.lang.UnsupportedOperationException

👉 put(), remove() 같은 수정 메서드는 모두 예외가 발생합니다.

 

3. 활용 예시

  • API 호출 시: 단일 키-값만 넘겨야 할 때
  • 불변 데이터 전달: 수정되면 안 되는 설정값이나 파라미터 전달 시
  • 테스트 코드 작성: 간단하게 한 쌍만 가진 Map 필요할 때

 

4. 주의할 점

  • Collections.singletonMap()항상 요소가 1개인 불변 Map을 반환합니다.
  • 내부 값은 null도 가능하지만, 수정은 불가능합니다.
  • 자바 9 이상에서는 Map.of("KR", "Korea") 같은 문법으로도 동일하게 구현 가능합니다.

 

5. 정리

  • Collections.singletonMap(K key, V value)
    👉 단일 키-값 쌍만 가진 불변 Map 반환
  • 수정 시도 → UnsupportedOperationException 발생
  • API 호출, 불변 데이터 전달, 테스트용으로 활용 가능

👉 키-값 하나짜리 Map이 필요하다면 Collections.singletonMap()이 가장 간단하다!

 

 

반응형
Comments