어제 오늘 내일

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

IT/Java

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

hi.anna 2025. 9. 7. 12:52

리스트, 셋, 맵 같은 컬렉션이 필요할 때가 있지만, 실제로는 요소가 딱 하나만 있어야 할 경우가 있습니다.
예를 들어, API 호출 시 인자가 Set 타입인데 실제로는 단일 값만 넘겨야 한다면 어떻게 할까요?
이럴 때 Collections.singleton()을 사용하면 됩니다.
이 메서드는 하나의 요소만 가진 불변(immutable) Set을 만들 때 사용합니다.

 

1. 기본 사용법

import java.util.*;

public class SingletonSetExample1 {
    public static void main(String[] args) {
        Set<String> fruit = Collections.singleton("apple");

        System.out.println(fruit);
    }
}

실행 결과

[apple]

👉 "apple" 하나만 담긴 불변 Set이 만들어졌습니다.

 

2. 수정 불가능한 Set

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

import java.util.*;

public class SingletonSetExample2 {
    public static void main(String[] args) {
        Set<Integer> numbers = Collections.singleton(100);

        numbers.add(200); // 수정 시도
    }
}

실행 결과 (예외 발생)

Exception in thread "main" java.lang.UnsupportedOperationException

👉 add(), remove() 같은 수정 메서드는 사용할 수 없습니다.

 

3. 활용 예시

  • API 호출 시: 인자가 Set<T>인데 값이 하나일 때
  • 불변 데이터 전달: 단일 값만 읽기 전용으로 넘길 때
  • 테스트 코드 작성: 간단하게 한 요소만 가진 Set 필요할 때

 

4. 주의할 점

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

 

5. 정리

  • Collections.singleton(T o)
    👉 단일 요소만 가진 불변 Set 반환
  • 수정 시도 → UnsupportedOperationException 발생
  • API 호출, 불변 데이터 전달, 테스트용으로 활용 가능

👉 요소가 하나만 필요한 Set이라면 Collections.singleton()이 가장 깔끔하다!

 

 

반응형
Comments