Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Spring MVC 구성요소
- 버블정렬
- java
- 재귀와반복문
- Spring MVC 동작원리
- 싱글톤패턴
- 스택
- String.valueOf()
- 인텔리제이
- vm인스턴스생성
- 백준
- 자바
- 백준 11659
- 재귀함수
- 클라우드에서 도커 실행하기
- 프로그래머스
- 코드스테이츠
- 코드스테이츠 백엔드
- 코딩테스트
- 알고리즘
- Array.asList
- 투포인터알고리즘
- OOP
- 11659
- 성능테스트툴
- List.of
- GCP
- Spring Web MVC
- 구간합구하기
- MySQL
Archives
- Today
- Total
순간을 기록으로
[Java] Arrays.asList와 List.of 차이점 본문
개요
안녕하세요. 루미너스입니다.
공부하다가 Arrays.asList와 List.of 기능은 같은데 뭐가 다른지 궁금해서 찾아봤습니다.
결론부터 말하자면 Arays.asList는 조금 더 자유롭고 List.of는 사용하기에 더 엄격하다고 생각하시면 좋습니다.
공통점
Array.asList와 List.of 모두 고정된 크기의 리스트를 반환합니다. 그렇기 때문에 새 요소를 추가하거나 삭제하면 UnsupportedOperationException이 발생합니다.
차이점1: List.of는 set으로 값을 변경할 수 없다.
List<Integer> list = Arrays.asList(1, 2, null);
list.set(1, 10); // OK
List<Integer> list = List.of(1, 2, 3);
list.set(1, 10); // Fails with UnsupportedOperationException
Arrays.asList의 mutable list를 반환하지만 List.of의 경우 immutable list를 반환하므로 값을 수정할 수 없습니다.
만약 값을 수정한다면 UnsupportedOperationException이 발생합니다.
차이점2: List.of는 null 요소를 가질 수 없다.
List<Integer> list = Arrays.asList(1, 2, null); // OK
List<Integer> list = List.of(1, 2, null); // Fails with NullPointerException
Arrays.asList의 경우 값이 null 요소를 허용하지만, List.of의 경우 null인 요소를 허용하지 않습니다.
차이점3: List.of는 contains(null)에 예외를 던진다.
List<Integer> list = Arrays.asList(1, 2, 3);
list.contains(null); // Returns false
List<Integer> list = List.of(1, 2, 3);
list.contains(null); // Fails with NullPointerException
Arrays.asList의 경우 null이 있으면 true, 없으면 false를 리턴하지만 List.of는 null이 애초에 못들어가므로 예외가 발생합니다.
차이점4: List.of는 원본 배열의 변화 반응하지 않는다.
Integer[] array = {1,2,3};
List<Integer> list = Arrays.asList(array);
array[1] = 10;
System.out.println(list); // Prints [1, 10, 3]
Integer[] array = {1,2,3};
List<Integer> list = List.of(array);
array[1] = 10;
System.out.println(list); // Prints [1, 2, 3]
Arrays.asList의 경우 원본 배열이 변할경우 값도 변합니다. 반면에 List.of의 경우 원본 배열이 값이 바뀌어도 값이 변하지 않습니다.
추가
고정된 크기의 리스트가 아닌 요소를 추가하거나 삭제할 수 있는 리스트가 필요한 경우가 있습니다.
이때에는 new ArrayList<>(Arrays.asList/ List.of)와 같이 사용하면 됩니다.
참고
'Development > JAVA' 카테고리의 다른 글
[Java] InstanceOf 사용하는 이유 (0) | 2022.10.20 |
---|---|
[Java] Wrapper 클래스는 왜 필요할까? (0) | 2022.10.11 |
[Java] toString() vs valueOf() 차이 (2) | 2022.05.31 |
[Java] parseInt vs ValueOf의 차이 (0) | 2022.05.31 |
[Java] 다형성(polymorphism) (0) | 2022.05.16 |
Comments