__[Java] UnmodifiableList는 진짜 불변 리스트가 아니다 ( 참고 )__

[Java] UnmodifiableList는 진짜 불변 리스트가 아니다
목차 들어가기 전에 불변성이 강조되는 객체지향 프로그래밍의 특성상 자바에서도 UnmodifiableList라는 클래스가 존재한다(물론 List 뿐만 아니라 Map과 Set도 존재한다). UnmodifiableList라는 이름에 걸맞게 add(), set(), remove() 등 리스트의 내부가 변경되는 메소드를 사용하면 바로 예외가 터져버린다. 그런데 이 UnmodifiableList는 불변성을 보장하는 진짜 불변 리스트가 아니다. 이에 대해 알아보자. 이하의 모든 내용은 Map과 Set에도 동일하게 적용된다. UnmodifiableList 객체 선언 UnmodifiableList 객체는 다음과 같이 Collection.unmodifiableList()를 사용하여 선언할 수 있다. List unmodif..
https://colabear754.tistory.com/185
  • 참고 UnmodifiableList 는
    • 내부적으로 원본 컬렉션을 참조한다.
    • 내부적으로 추가 수정 삭제에 예외를 터뜨린다.
    • 진정한 의미의 UnmodifiableList 를 수행하기 위하여는
      • 자바8
        • new ArrayList( 원본 컬렉션 )
      • 자바 11
        • List.copyOf( 원본 컬렉션 )

      을 사용한다.

    • 컬렉션의 경우
      • 스트림을 사용한다면
        .collect(Collectors.toUnmodifiableList());
        
        • 을 사용해도 동일
      • 자바16 이상에서
          .toList();
        • 을 사용해도 동일

Uploaded by N2T