어제 오늘 내일

[Java 기초] Arrays.asList()로 배열을 리스트로 바꾸기 본문

IT/Java

[Java 기초] Arrays.asList()로 배열을 리스트로 바꾸기

hi.anna 2025. 8. 30. 01:01

자바에서 배열과 리스트는 서로 다른 자료구조이지만, 간단하게 변환할 수 있는 방법이 있습니다.
그중 가장 자주 쓰이는 메서드가 바로 Arrays.asList() 입니다.

 

1. Arrays.asList()란?

  • 배열을 **리스트(List)**로 감싸서 반환합니다.
  • List 인터페이스를 구현한 고정 크기 리스트를 리턴합니다.
  • 반환된 리스트는 원본 배열과 연결(linked)되어 있어, 한쪽을 수정하면 다른 쪽에도 반영됩니다.

👉 메서드 시그니처:

public static <T> List<T> asList(T... a)

 

2. 기본 사용 예제

import java.util.Arrays;
import java.util.List;

public class AsListExample1 {
    public static void main(String[] args) {
        String[] fruits = {"Apple", "Banana", "Cherry"};

        List<String> fruitList = Arrays.asList(fruits);

        System.out.println(fruitList);
    }
}

실행 결과

[Apple, Banana, Cherry]

👉 배열이 간단히 리스트로 변환됩니다.

 

3. 리스트와 배열의 연결성

리스트를 변경하면 원본 배열에도 반영됩니다.

import java.util.Arrays;
import java.util.List;

public class AsListExample2 {
    public static void main(String[] args) {
        String[] fruits = {"Apple", "Banana", "Cherry"};
        List<String> fruitList = Arrays.asList(fruits);

        fruitList.set(1, "Blueberry");

        System.out.println(Arrays.toString(fruits));
    }
}

실행 결과

[Apple, Blueberry, Cherry]

👉 fruitList를 수정했더니 원본 배열도 변경되었습니다.

 

4. 주의사항 (UnsupportedOperationException)

Arrays.asList()로 만든 리스트는 크기 변경이 불가능합니다.
즉, add()remove() 같은 메서드를 호출하면 예외가 발생합니다.

import java.util.Arrays;
import java.util.List;

public class AsListExample3 {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("A", "B", "C");

        list.add("D"); // 예외 발생!
    }
}

실행 결과

Exception in thread "main" java.lang.UnsupportedOperationException

👉 이유: Arrays.asList()원본 배열 기반의 고정 크기 리스트이기 때문입니다.

 

5. 자유롭게 추가/삭제 가능한 리스트로 변환하기

new ArrayList<>(Arrays.asList(...)) 형태로 감싸주면 크기 변경이 가능한 리스트를 만들 수 있습니다.

import java.util.*;

public class AsListExample4 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));

        list.add("D"); // 정상 작동
        list.remove("B");

        System.out.println(list);
    }
}

실행 결과

[A, C, D]

👉 이렇게 하면 일반적인 ArrayList처럼 자유롭게 사용할 수 있습니다.

 

6. 기본형 배열 주의사항

int[] 같은 기본형 배열을 넣으면, 리스트에 배열 전체가 한 개의 요소로 들어갑니다.

import java.util.Arrays;
import java.util.List;

public class AsListExample5 {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3};
        List<int[]> list = Arrays.asList(numbers);

        System.out.println(list.size()); 
        System.out.println(list.get(0));
    }
}

실행 결과

1
[I@6d06d69c

👉 즉, 기본형 배열은 **박싱(wrapper class)**을 사용해야 합니다.

List<Integer> list = Arrays.asList(1, 2, 3);

 

7. 정리

  • Arrays.asList() : 배열을 리스트로 간단히 변환
  • 반환된 리스트는 고정 크기라서 add/remove 불가
  • 원본 배열과 연결되어 있음
  • 크기 변경 가능한 리스트가 필요하다면 new ArrayList<>(Arrays.asList(...)) 사용
  • 기본형 배열은 직접 박싱해야 올바르게 변환 가능

👉 배열을 리스트로 바꿀 때는 Arrays.asList()를 쓰되, 크기 변경이 필요하다면 꼭 new ArrayList<>(...)로 감싸자!

 

 

반응형
Comments