반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- html
- input
- javascript
- CMD
- CSS
- Java
- Maven
- vscode
- IntelliJ
- date
- windows
- 문자열
- 이탈리아
- Eclipse
- js
- 인텔리제이
- table
- json
- 테이블
- 배열
- 자바
- 이클립스
- list
- 정규식
- Button
- 자바스크립트
- ArrayList
- Visual Studio Code
- Array
- string
Archives
- Today
- Total
어제 오늘 내일
[Java] Collections.unmodifiableMap() – 읽기 전용 맵 만들기 본문
Java에서 Map
을 외부에 그대로 반환하면, 의도치 않게 키-값 쌍이 수정될 수 있습니다.
이를 막고 싶을 때 사용하는 방법이 바로 Collections.unmodifiableMap()
입니다.
이 메서드는 맵을 읽기 전용(Read-Only)으로 감싸서 안전하게 다룰 수 있도록 해줍니다.
1. 기본 사용법
import java.util.*;
public class UnmodifiableMapExample {
public static void main(String[] args) {
Map<String, String> original = new HashMap<>();
original.put("A", "Apple");
original.put("B", "Banana");
Map<String, String> unmodifiable = Collections.unmodifiableMap(original);
System.out.println(unmodifiable); // {A=Apple, B=Banana}
}
}
👉 unmodifiableMap()
은 원본 맵을 감싸는 읽기 전용 뷰(View)를 반환합니다.
2. 수정 불가능
읽기 전용 뷰에서는 키-값을 추가, 삭제, 변경할 수 없습니다.
unmodifiable.put("C", "Cherry"); // UnsupportedOperationException 발생
unmodifiable.remove("A"); // UnsupportedOperationException 발생
👉 단순 조회(get()
, containsKey()
, 반복문 등)는 정상적으로 가능합니다.
3. 원본 변경은 반영됨
읽기 전용 맵은 복사본이 아니라 원본을 감싼 뷰이므로, 원본이 수정되면 읽기 전용 뷰에도 반영됩니다.
original.put("C", "Cherry");
System.out.println(unmodifiable); // {A=Apple, B=Banana, C=Cherry}
👉 따라서 완전한 불변 Map은 아님에 주의해야 합니다.
4. 언제 쓰면 좋을까?
- API 안정성 확보: 외부에 맵을 반환할 때 실수로 변경하지 못하게 함
- 데이터 보호: 내부 데이터는 유지하면서 안전하게 읽기 전용으로 제공
- 디버깅 편의: 원치 않는 변경으로 인한 버그 방지
5
. 진짜 불변 Map이 필요하다면?
Java 9 이상에서는 Map.of()
또는 Map.ofEntries()
를 사용하면 아예 수정 불가능한 Immutable Map을 만들 수 있습니다.
Map<String, String> immutableMap = Map.of(
"A", "Apple",
"B", "Banana",
"C", "Cherry"
);
👉 이 경우 원본 자체도 변경 불가능합니다.
6. 정리
Collections.unmodifiableMap(map)
→ 읽기 전용 Map 뷰 생성- 뷰에서는 추가/삭제/수정 불가능
- 단, 원본을 수정하면 뷰에도 반영됨 → 완전한 불변 Map은 아님
- 진짜 불변 Map은
Map.of()
또는Map.ofEntries()
활용
👉 외부에 안전하게 Map을 제공하고 싶다면 Collections.unmodifiableMap()
을 사용하자!
반응형
'IT > Java' 카테고리의 다른 글
[Java] Collections.unmodifiableSet() – 읽기 전용 집합 만들기 (0) | 2025.09.13 |
---|---|
[Java] Collections.unmodifiableList() – 읽기 전용 리스트 만들기 (0) | 2025.09.13 |
[Java] Collections.checkedList() – 런타임 타입 안전한 리스트 만들기 (0) | 2025.09.12 |
[Java] Collections.nCopies() – 같은 값으로 채워진 불변 리스트 만들기 (0) | 2025.09.12 |
[Java] Collections.fill() – 리스트를 한 값으로 채우기 (0) | 2025.09.11 |
Comments