JAVA[자바] : Array.asList()

최은창·2024년 2월 26일
post-thumbnail

기능

Array.asList()는 배열을 ArrayList처럼 바꿔준다.
asList()는 ArrayList패키지가 아니므로 요소를 추가하거나 삭제할 수 없다.

설명

asList()

asList()는 배열을 리스트로 변경해준다.

String[] A = new String[]{"1", "2", "3", "4", "5", "6"};

이 배열을 리스트로 변경하려고 한다.

List<String> list = new Arrays.asList(A);

Array와 List수정

이 상태에서 원본 배열 A를 수정하고 list 값도 수정하면 어떻게 될까?

A[0] += "0";
list.set(4, list.get(4) + "0");

배열 A에 값은 {10, 2, 3, 4, 5, 6,} 이고
리스트 list의 값은 {1, 2, 3, 4, 50, 6} 일까?

실제로 둘 중 아무거나 출력해도 다음과 같이 출력이 된다.

원본 배열값도 바뀌고 리스트 값도 바뀌게 된다.

이러한 이유는 asList()가 원본 배열A의 주소값을 list로 가져오기 때문이다.

ArrayList

만약 원본이 바뀌기를 원치 않는다면 어떻게 해결해야 할까?

ArrayList를 이용해서 새로운 list를 만들 수 있다.

ArrayList<String> arrayList = new ArrayList<>(Arrays.asList(A));

ArrayList를 이용하면 원본 배열에 값을 수정하지 않으면서 별개의 리스트를 생성하여 값을 수정, 추가할 수 있다.

A[0] += "0";
arrayList.set(4, arrayList.get(4) + "0");

주의할 점!

Array.asList()함수는 ArrayList패키지의 함수가 아니다

java.util.Arrays의 리스트는 set(), get(), contains(),함수를 제공하지만 remove()add() 함수를 제공하지 않는다.

이는 배열의 요소를 삭제하거나 추가할 수 없어 배열의 크기를 변경할 수 없다는 것을 의미한다.

배열의 원소 추가와 삭제 사이즈를 변경하고 싶다면 ArrayList를 이용하라!

풀지 못한 숙제

배열을 정수형으로 했을 경우 좀 다른 상황이 생긴다.

int[] A = new int[]{1, 2, 3, 4, 5, 6};

List<Int[]> list = Arrays.asList(A);

// 이 경우 사용 방법이 조금은 헷갈리게 된다.

이 부분은 여유가 되면 더 공부하기로 하자!

혹은 인트형 배열을 asList를 사용해서 리스트로 넣어 사용하는 방법을 아는 분은 덧글을 달아 주길 바란다!

profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글