Arrays.asList와 List.of의 차이점
JAVA
2024.12.19.
배열을 list로 변환할 때 사용하는 Array.asList
와 List.of
의 역할이 비슷한 것 같은데 차이점에 대해 궁금증이 생겨 정리한다.
1. Array.asList()
Array.asList
는 아래와 같이 사용한다.
// 사용법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()
는 아래와 같이 사용한다.
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 의 차이점에 대하여.