Arrays.asList() 란?
일반 배열을 ArrayList로 바꿔준다.
int[] Int_Array = {1,2,3,4,5};
List<Integer> list = Arrays.asList(Int_Array);
Arrays.asList()의 리턴 값
ArrayList <>(a)를 리턴하는 모습을 알 수 있다.
여기서 ArrayList <>()는 우리가 흔히 아는 그 ArrayList Class가 아닌
Arrays class 안에 따로 정의된 private static class이다
(add 함수가 정의되어 있지 않다)
//Java Arrays.class 파일
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
Arrays.asList() 알아야 할 점
밑의 코드와 출력을 보면 asList를 해준 원본 배열까지 값이 바뀐 것을 알 수 있다.
그 이유는 asList를 이용하여 List 객체를 만들 때 원래 배열 즉 arr의 주소 값을 받아가기 때문이다.
그리하여 add를 사용한 값을 추가할 수 없는 것이다.
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main{
public static void main(String[] args) {
String[] String_arr = {"a", "b", "c"};
System.out.println(Arrays.toString(String_arr)); //[a,b,c]
List list = Arrays.asList(String_arr);
System.out.println(list); //[a,b,c]
list.set(1, "hello");
System.out.println("arr : "+ Arrays.toString(String_arr));
System.out.println("list : "+list);
}
}
//출력
[a, b, c]
[a, b, c]
arr : [a, hello, c]
list : [a, hello, c]
ArrayList에 배열을 넣으려면??
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main{
public static void main(String[] args) {
String[] String_arr = {"a", "b", "c"};
System.out.println(Arrays.toString(String_arr)); //[a,b,c]
//새로운 배열을 만들은 것과 같음
List list = new ArrayList<>(Arrays.asList(String_arr));
System.out.println(list); //[a,b,c]
list.set(1, "hello");
System.out.println("arr : "+ Arrays.toString(String_arr));
System.out.println("list : "+list);
}
}
//출력
[a, b, c]
[a, b, c]
arr : [a, b, c]
list : [a, hello, c]
Arrays.asList 사용 예제
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main{
public static void main(String[] args) {
List<Integer> know = Arrays.asList(1,2,3,4,5);
know.set(2, know.get(2)+1);
System.out.println(know);
}
}
//출력 [1, 2, 4, 4, 5]
참고한 사이트
https://m.blog.naver.com/roropoly1/22114015634
https://onlyfor-me-blog.tistory.com/319
https://hianna.tistory.com/510