반응형
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
- 자바
- CMD
- 테이블
- ArrayList
- Eclipse
- Java
- html
- 이탈리아
- CSS
- string
- windows
- javascript
- 배열
- 이클립스
- list
- Button
- 정규식
- date
- Array
- 인텔리제이
- IntelliJ
- js
- input
- table
- json
- 문자열
- vscode
- 자바스크립트
- Visual Studio Code
- Maven
Archives
- Today
- Total
어제 오늘 내일
[Java] Collections.unmodifiableList() – 읽기 전용 리스트 만들기 본문
Java에서 컬렉션을 외부로 반환할 때, 의도치 않게 데이터가 수정되는 경우가 있습니다.
이를 막고 싶을 때 사용할 수 있는 방법이 바로 Collections.unmodifiableList()
입니다.
이 메서드를 이용하면 리스트를 **읽기 전용(Read-Only)**으로 감싸 안전하게 다룰 수 있습니다.
1. 기본 사용법
import java.util.*;
public class UnmodifiableListExample1 {
public static void main(String[] args) {
List<String> original = new ArrayList<>();
original.add("Apple");
original.add("Banana");
List<String> unmodifiable = Collections.unmodifiableList(original);
System.out.println(unmodifiable); // [Apple, Banana]
}
}
👉 unmodifiableList()
는 원본 리스트를 감싸는 읽기 전용 뷰(View)를 생성합니다.
2. 수정 불가능
읽기 전용 뷰에서는 추가, 삭제, 변경이 모두 불가능합니다.
unmodifiable.add("Cherry"); // UnsupportedOperationException 발생
unmodifiable.remove("Apple"); // UnsupportedOperationException 발생
unmodifiable.set(0, "Orange"); // UnsupportedOperationException 발생
👉 단순히 get()
, size()
같은 읽기 연산만 가능합니다.
3. 원본 리스트는 여전히 수정 가능
주의할 점은, unmodifiableList()
가 원본을 복사하는 것이 아니라 감싸는 것이라는 사실입니다.
original.add("Cherry");
System.out.println(unmodifiable); // [Apple, Banana, Cherry]
👉 즉, 원본이 바뀌면 읽기 전용 리스트에도 그대로 반영됩니다.
4. 언제 사용하면 좋을까?
- API에서 컬렉션 반환할 때
→ 외부에서 리스트를 수정하지 못하게 막음 - 데이터 무결성 보장
→ 예기치 않은 수정으로 인한 버그 방지 - 읽기 전용 뷰 제공
→ 내부적으로는 수정 가능하지만 외부에는 안전한 접근만 허용
5. 진짜 불변 리스트가 필요하다면?
Collections.unmodifiableList()
는 원본을 수정할 수 있기 때문에 완전한 불변 리스트(Immutable List)는 아닙니다.
완전한 불변 리스트가 필요하다면 Java 9 이상에서 제공하는 List.of()
를 사용하는 것이 더 적합합니다.
List<String> immutable = List.of("A", "B", "C");
👉 이 경우 원본 자체도 수정 불가능합니다.
6. 정리
Collections.unmodifiableList(list)
→ 리스트의 읽기 전용 뷰 생성- 뷰에서는 추가/삭제/수정 불가능
- 단, 원본 리스트가 바뀌면 뷰도 함께 바뀜
- 외부에 안전하게 리스트를 반환할 때 유용
- 진짜 불변 리스트는
List.of()
사용
👉 리스트를 외부에 안전하게 공유하고 싶다면 Collections.unmodifiableList()
를 쓰자!
반응형
'IT > Java' 카테고리의 다른 글
[Java] Collections.unmodifiableSet() – 읽기 전용 집합 만들기 (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 |
[Java] Collections.rotate() – 리스트를 간단히 회전시키는 방법 (0) | 2025.09.11 |
Comments