[Java] UnmodifiableList는 진짜 불변 리스트가 아니다
목차 들어가기 전에 불변성이 강조되는 객체지향 프로그래밍의 특성상 자바에서도 UnmodifiableList라는 클래스가 존재한다(물론 List 뿐만 아니라 Map과 Set도 존재한다). UnmodifiableList라는 이름에 걸맞게 add(), set(), remove() 등 리스트의 내부가 변경되는 메소드를 사용하면 바로 예외가 터져버린다. 그런데 이 UnmodifiableList는 불변성을 보장하는 진짜 불변 리스트가 아니다. 이에 대해 알아보자. 이하의 모든 내용은 Map과 Set에도 동일하게 적용된다. UnmodifiableList 객체 선언 UnmodifiableList 객체는 다음과 같이 Collection.unmodifiableList()를 사용하여 선언할 수 있다. List unmodif..

- 참고 UnmodifiableList 는
- 내부적으로 원본 컬렉션을 참조한다.
- 내부적으로 추가 수정 삭제에 예외를 터뜨린다.
- 진정한 의미의 UnmodifiableList 를 수행하기 위하여는
- 자바8
- new ArrayList( 원본 컬렉션 )
- 자바 11
- List.copyOf( 원본 컬렉션 )
을 사용한다.
- 자바8
- 컬렉션의 경우
- 스트림을 사용한다면
.collect(Collectors.toUnmodifiableList());
- 을 사용해도 동일
- 자바16 이상에서
.toList();
- 을 사용해도 동일
- 스트림을 사용한다면
Uploaded by N2T
'자바 > 일반' 카테고리의 다른 글
Collections.emptyList() vs List.of() (0) | 2024.02.28 |
---|---|
[객체지향 생활체조] __규칙 8: 일급 콜렉션을 쓴다.__ (0) | 2024.02.24 |
BIGDECIMAL 사용시 주의점 (0) | 2024.02.24 |
[팁] compareTo 기준점 (0) | 2024.02.19 |
final 키워드 사용처 (0) | 2023.11.04 |