PHpullh
학습 라이브러리/Java/불변 컬렉션 (List.of, Map.of)

JAVA · 컬렉션

불변 컬렉션 (List.of, Map.of)

Java 9+의 팩토리 메서드로 불변 컬렉션을 생성하고 활용합니다.

컬렉션중급List.ofMap.of불변컬렉션Java9

핵심 설명

Java 9+의 팩토리 메서드로 불변 컬렉션을 생성하고 활용합니다.

Java code

import java.util.*;

public class ImmutableCollections {
    public static void main(String[] args) {
        // List.of — 불변 리스트
        List<String> list = List.of("A", "B", "C");
        // list.add("D"); // UnsupportedOperationException

        // Set.of — 불변 집합
        Set<Integer> set = Set.of(1, 2, 3);
        // 중복 시 IllegalArgumentException

        // Map.of — 최대 10개 엔트리
        Map<String, Integer> map = Map.of("a", 1, "b", 2);

        // Map.ofEntries — 10개 초과
        Map<String, Integer> large = Map.ofEntries(
            Map.entry("key1", 1),
            Map.entry("key2", 2),
            Map.entry("key3", 3)
        );

        // 기존 컬렉션을 불변으로 복사
        List<String> mutable = new ArrayList<>(List.of("X", "Y"));
        List<String> immutable = List.copyOf(mutable);
        mutable.add("Z"); // 원본은 변경 가능
        System.out.println(mutable);    // [X, Y, Z]
        System.out.println(immutable);  // [X, Y] (영향 없음)

        // Collections.unmodifiable* vs List.of
        // unmodifiable: 래퍼 (원본 변경 반영)
        // List.of/copyOf: 독립 복사본
    }
}

학습 팁

List.of()는 null을 허용하지 않습니다. null이 포함될 수 있으면 Collections.unmodifiableList()를 사용하세요.

주의할 점

Set.of(1, 1)처럼 중복 요소를 넘기면 IllegalArgumentException이 발생합니다. 중복이 있을 수 있으면 Set.copyOf(list)를 사용하세요.

자주 묻는 질문

불변 컬렉션 (List.of, Map.of)란 무엇인가요?

Java 9+의 팩토리 메서드로 불변 컬렉션을 생성하고 활용합니다.

불변 컬렉션 (List.of, Map.of) 학습 시 주의할 점은 무엇인가요?

Set.of(1, 1) 처럼 중복 요소를 넘기면 IllegalArgumentException 이 발생합니다. 중복이 있을 수 있으면 Set.copyOf(list) 를 사용하세요.