JAVA | new ArrayList<>() vs Arrays.asList()

Wonhee 📘·2022년 3월 15일

JAVA

목록 보기
1/5
post-thumbnail

List를 만들때 대부분은 new ArrayList<>()와 Arrays.asList()를 사용하여 만든다.

그럼 new ArrayList<>()와 Arrays.asList()의 차이를 알고 사용하고 있는가?

이번 글에서는 두개의 차이점을 알아볼 것이다.

1. return type

new ArrayList<>()와 Arrays.asList()는 다른 클래스다.

import java.util.ArrayList; // new ArrayList<>()
import java.util.Arrays; // Arrays.asList()

new ArrayList<>()는 ArrayList를
Arrays.asList()는 Arrays의 정적 클래스인 ArrayList를 리턴한다.

// Arrays.class
@SafeVarargs
public static <T> List<T> asList(T... a) {
    return new Arrays.ArrayList(a);
}

2. 원소를 추가/삭제 할 수 있나?

결론부터 말하면 new ArrayList<>()는 할 수 있고, Arrays.asList() 할 수 없다.

Arrays.asList()는 javadoc에

Returns a fixed-size list backed by the specified array.
특정한 배열에 의해 백업된 고정 크기 List로 반환. (번역 )

라고 쓰여져 있다.
말 그대로 Arrays.asList()는 고정된 List다. List 원소를 추가 할 수도, 삭제할 수도 없다.
만약 add를 시도한다면

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

Exception in thread "..." java.lang.UnsupportedOperationException
    at ...
    at ...
    ...

이러한 오류를 확인할 수 있을 것이다.

하지만 값을 변경할 수 있게 코드를 구성할수도 있다.
이 내용은 이 글의 출처인 아래 사이트에서 확인해보도록 하자.
추가적으로 좀 더 자세히 알고 싶다면
확인하러 가기 !

profile
오늘 걷지 않으면 내일은 뛰어야한다 🚶‍♂️ 🏃‍♀️

0개의 댓글