List를 만들때 대부분은 new ArrayList<>()와 Arrays.asList()를 사용하여 만든다.
그럼 new ArrayList<>()와 Arrays.asList()의 차이를 알고 사용하고 있는가?
이번 글에서는 두개의 차이점을 알아볼 것이다.
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);
}
결론부터 말하면 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 ...
...
이러한 오류를 확인할 수 있을 것이다.
하지만 값을 변경할 수 있게 코드를 구성할수도 있다.
이 내용은 이 글의 출처인 아래 사이트에서 확인해보도록 하자.
추가적으로 좀 더 자세히 알고 싶다면
확인하러 가기 !