List.copyOf vs Collections.unmodifiableList

Minsu Kang·2021년 5월 9일
1

Java

목록 보기
5/5

List.copyOf

인자로 들어오는 Collection 객체를 복사하여 unmodifiable list를 반환한다.

Example

List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
List<String> unmodifiableList = List.copyOf(list);
list.add("d");

System.out.println(list); // [a, b, c, d]
System.out.println(unmodifiableList); // [a, b, c]

Collections.unmodifiableList

인자로 들어오는 Collection 객체의 읽기전용 unmodifiable list를 반환한다.

Example

List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
List<String> unmodifiableList = Collections.unmodifiableList(list);
list.add("d");

System.out.println(list); // [a, b, c, d]
System.out.println(unmodifiableList); // [a, b, c, d]

공통점

두 함수 모두 원본 객체와 동일한 원소를 갖는 unmodifiable list를 반환한다.
unmodifiable list란 수정이 불가능한 읽기전용 list를 뜻한다.

차이점

List.copyOf는 함수호출로 생성된 객체가 원본 객체를 복사한 객체이므로 둘 사이의 아무런 관계가 없다.

하지만, Collections.unmodifiableList는 내부적으로 원본 객체를 그대로 가지고 있기 때문에 원본 객체 수정 시 unmodifiable list 또한 영향을 받는다.

profile
백엔드 개발자

0개의 댓글