새소식

💻 Computer/🦀 Java

[Java] Arrays.asList()은 무엇인가

  • -
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

 

[JAVA] Arrays.asList()

일반 배열을 ArrayList로 변환한다. Arrays.asList()는 Arrays의 private 정적 클래스인 ArrayList...

blog.naver.com

https://onlyfor-me-blog.tistory.com/319

 

[JAVA] Iterator란? Iterator를 사용하는 이유와 사용법

먼저 iterator와 원형인 iterate의 사전적 정의가 무엇인지 확인해보자. iterate : (계산, 컴퓨터 처리 절차를) 반복하다 iterator : 반복자 계산 같은 컴퓨터의 작업 처리 절차를 반복한다는 뜻 같다. 그럼

onlyfor-me-blog.tistory.com

https://hianna.tistory.com/510

 

[Java] 배열 값 출력하는 2가지 방법 (반복문, Arrays.toString())

이번 포스팅에서는 반복문과 java.util.Arrays의 toString() 메소드를 이용하여 배열의 값을 출력하는 방법을 소개합니다. 먼저, 그냥 배열의 값을 출력해 볼까요? [ 코드 ] public class PrintArray { public sta..

hianna.tistory.com

 

'💻 Computer > 🦀 Java' 카테고리의 다른 글

[Java] Generic  (0) 2022.07.23
[Java] String을 자세히  (1) 2022.07.22
Java this 와 super  (0) 2022.07.17
(Java) 다형성  (0) 2022.07.03
java 숫자인지 판별  (0) 2022.07.02
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.