• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

Iterator<User> 대신에 Collections.unmodifiableList(users)를 사용해도 되나요?

23.10.12 12:36 작성 조회수 203

0

  1. [미니프로젝트] 회원관리 프로그램 강의 중에서 List<User> 객체가 외부에 의해서 값이 변경되는 것을 막기 위해 read only인 Iterator를 사용하셨는데요. 구글에서 검색해보니 다른 방법도 있는 것 같아요. Collections.unmodifiableList(List list) 를 사용하면 immutable (read-only)로 List를 return 할 수 있다고 하네요.

     

    https://softwareengineering.stackexchange.com/questions/316234/how-to-design-an-iterable-but-immutable-read-only-collection

     

답변 1

답변을 작성해보세요.

1

User객체가 변할까봐 Iterator를 사용하는게 아닙니다. List등에 담기는 자료의 수를 몰라도 모든 데이터를 꺼낼 수 있으니 사용하는 것입니다.

Joseph님의 프로필

Joseph

질문자

2023.10.14

63 강의 시간 1시간 쯤 전후(59:20 ~ 1:01:16)에서 public List<User> getUsers() 메서드를 public Iterator<User> getUsers() 메서드로 리턴 타입을 변경하실때, List<User>를 리턴하면 외부에서 이 리스트 내용을 변경하거나 삭제할 수 있기 때문에 이것을 방지하기 위해 읽기전용인 Iterator<User> 타입으로 외부에 리턴하는게 좋다고 설명하셔서요.

리스트의 내용을 외부에서 수정 가능하다는 의미였습니다.

 

리스트를 조작하는 건 그 리스트를 다루는 클래스에서만 해야하기 때문입니다.