728x90
반응형
Immutable List는 변경 불가능한 리스트로, 리스트의 요소를 추가하거나 삭제하는 등의 조작이 불가능합니다. 데이터 무결성을 유지하고, 예기치 않은 데이터 변경으로 인한 문제를 방지할 수 있습니다.
Immutable List는 Java 9부터 기본적으로 제공되는 List.of() 메서드나 Google Guava 라이브러리의 ImmutableList를 통해 생성할 수 있습니다. 이러한 리스트는 읽기 전용 데이터가 필요하거나, 다중 스레드 환경에서 안전하게 데이터를 공유해야 할 때 유용합니다.
Immutable List의 장점
- 데이터 무결성 유지
데이터가 변경되지 않도록 보장하여, 예기치 않은 동작을 방지할 수 있습니다. - 스레드 안정성
다중 스레드 환경에서 데이터를 안전하게 공유할 수 있습니다. - 가독성
변경되지 않는 데이터라는 의도를 코드에서 명확히 드러낼 수 있습니다. - 최적화 가능성
Immutable List는 수정이 불가능하므로, 런타임 최적화가 더 효과적으로 이루어질 수 있습니다.
활용 예제: Java 9 List.of()
Java 9부터 List.of() 메서드를 사용하여 간단히 Immutable List를 생성할 수 있습니다.
import java.util.List;
public class ImmutableListExample {
public static void main(String[] args) {
List<String> immutableList = List.of("A", "B", "C");
System.out.println("Immutable List: " + immutableList);
// 아래 코드는 실행 시 UnsupportedOperationException 발생
// immutableList.add("D");
// immutableList.remove("A");
}
}
실행 결과:
List.of()로 생성된 리스트는 요소를 추가, 삭제, 변경할 수 없으며, 시도할 경우 UnsupportedOperationException이 발생합니다.
실용적 사용 예시
1. API 응답 데이터의 읽기 전용 처리
API 응답 데이터는 보통 읽기 전용으로 사용됩니다. Immutable List로 처리하면 클라이언트에서 데이터가 수정되는 것을 방지할 수 있습니다.
public List<String> getReadOnlyData() {
return List.of("Data1", "Data2", "Data3");
}
2. 다중 스레드 환경에서 데이터 공유
동기화 문제를 방지하고 안전하게 데이터를 공유하기 위해 Immutable List를 사용합니다.
public class ThreadSafeData {
private static final List<String> SHARED_DATA = List.of("Shared1", "Shared2");
public static List<String> getSharedData() {
return SHARED_DATA;
}
}
주의할 점
- Immutable List는 수정이 불가능하므로, 생성 시점에 데이터가 완전해야 합니다.
- 대량의 데이터가 필요할 경우 성능 문제가 발생할 수 있으니, 상황에 맞게 설계가 필요합니다.
Immutable List를 사용하면 코드 안정성과 가독성이 향상됩니다. 데이터의 신뢰성을 보장해야 하거나, 동시성을 고려해야 하는 애플리케이션에서는 Immutable List를 적극 활용해보세요!
728x90
반응형
'Java > Java이론' 카테고리의 다른 글
LinkedList와 Custom Comparator를 활용한 정렬 방법 (1) | 2024.12.15 |
---|---|
Collections.synchronizedList() :멀티스레드 환경에서 안전한 리스트 사용하기 (1) | 2024.12.13 |
Java WeakHashMap 이해하기 (0) | 2024.11.25 |
ArrayDeque: 효율적인 양방향 데이터 처리 (0) | 2024.11.22 |
Java의 PriorityQueue: 우선순위 기반 큐 (0) | 2024.11.21 |