자바/일반
__[Java] UnmodifiableList는 진짜 불변 리스트가 아니다 ( 참고 )__
OverTheHorizon3410
2024. 2. 24. 22:31
[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