어제 오늘 내일

[Java 기초] Collections.singletonList()로 단일 요소 불변 리스트 만들기 본문

IT/Java

[Java 기초] Collections.singletonList()로 단일 요소 불변 리스트 만들기

hi.anna 2025. 9. 5. 12:47

리스트가 필요하지만 요소가 딱 하나만 있어야 할 때가 있습니다.
예를 들어, 어떤 API가 리스트를 요구하지만 실제로는 한 개 값만 넘겨주고 싶을 때 유용합니다.
이럴 때 Collections.singletonList()를 사용하면 됩니다.
이 메서드는 하나의 요소만 가진 불변(immutable) 리스트를 만들 때 사용합니다.

 

1. 기본 사용법

import java.util.*;

public class SingletonListExample1 {
    public static void main(String[] args) {
        List<String> fruit = Collections.singletonList("apple");

        System.out.println(fruit);
    }
}

실행 결과

[apple]

👉 "apple" 하나만 담긴 리스트가 만들어졌습니다.

 

2. 수정 불가능한 리스트

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

import java.util.*;

public class SingletonListExample2 {
    public static void main(String[] args) {
        List<Integer> number = Collections.singletonList(100);

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

실행 결과 (예외 발생)

Exception in thread "main" java.lang.UnsupportedOperationException

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

 

3. 활용 예시

  • API 호출 시: 인자가 List<T> 타입일 때, 단일 요소만 넘겨야 할 경우
  • 테스트 코드 작성: 간단하게 한 개 값만 가진 리스트가 필요할 때
  • 불변 데이터 전달: 값이 바뀌면 안 되는 상황에서 안전하게 사용

 

4. 주의할 점

  • Collections.singletonList()는 리스트의 크기가 1로 고정됩니다.
  • 내부의 요소는 null도 가능하지만, 바꾸는 것은 불가능합니다.
  • 자바 9 이상이라면 List.of("apple") 같은 문법도 비슷한 효과를 냅니다.

 

5. 정리

  • Collections.singletonList(T o)
    👉 단일 요소만 가진 불변 리스트 반환
  • 수정하려고 하면 UnsupportedOperationException 발생
  • API 호출, 테스트, 불변 데이터 전달에 유용

👉 리스트에 요소가 하나만 필요하다면 Collections.singletonList()가 가장 간단하다!

 

 

반응형
Comments