Ian's Archive 🏃🏻

thumbnail
Arrays.asList와 List.of의 차이점
JAVA
2024.12.19.

배열을 list로 변환할 때 사용하는 Array.asListList.of의 역할이 비슷한 것 같은데 차이점에 대해 궁금증이 생겨 정리한다.

1. Array.asList()

Array.asList는 아래와 같이 사용한다.

copyButtonText
// 사용법1
List<Integer> asList = Arrays.asList(1, 2, 3, 4, 5);
System.out.println("asList = " + asList); // asList = [1, 2, 3, 4, 5]

// 사용법2
Integer[] array = {1, 2, 3, 4, 5};
List<Integer> asListByArray = Arrays.asList(array);
System.out.println("asListByArray = " + asListByArray); // asListByArray = [1, 2, 3, 4, 5]

2. List.of()

List.of()는 아래와 같이 사용한다.

copyButtonText
List<Integer> listOf = List.of(1, 2, 3, 4, 5);
System.out.println("listOf = " + listOf); // listOf = [1, 2, 3, 4, 5]

Integer[] array = {1, 2, 3, 4, 5};
List<Integer> listByArray = List.of(array);
System.out.println("listByArray = " + listByArray); // listByArray = [1, 2, 3, 4, 5]

3. 차이점

원소 추가/삭제 set사용
new ArrayList<>() O O
Arrays.asList() X O
List.of() X X
  • Arrays.asList는 변경이 가능하기 때문에 Thread-Safe 하지 않음. List.of는 완전 불변하기 때문에 쓰레드에 안전함.
  • Arrays.asList()는 null 요소를 허용하고 List.of()는 null 요소를 허용하지 않음
  • 메모리는 List.of 가 덜 사용. 따라서 반 불변인 Arrays.asList 보단 완전 불변인 List.of 사용 권장
  • Arrays.asList , List.of 모두 변경할 수 없기 때문에 별도로 Collections을 생성해서 요소의 값을 복사하여 사용해야 한다.

Reference

Arrays.asList() 와 List.of() 차이 한방 정리
[Java] Arrays.asList 와 List.of 의 차이점에 대하여.

Thank You for Visiting My Blog, I hope you have an amazing day 😆
© 2023 Ian, Powered By Gatsby.