자바

Java 배열을 List로 변경하는 방법

땅부자몽구스 2021. 10. 17. 22:16

Java 배열 객체(int[], String[] 등)는 Arrays.asList() 메서드를 이용하면 List로 변경이 가능하다.

String[] stringArray = {"a", "b", "c"};
List<String> stringList = Arrays.asList(stringArray);

 

Arrays.asList()의 경우 return 타입이 java.util.Array.ArrayList로 

java.util.ArrayList와는 다르며, immutable한 객체이다.
따라서 아래와 같이 java.util.ArrayList로 만들어주어야 한다.

String[] stringArray = {"a", "b", "c"};
List<String> stringList = Arrays.asList(stringArray);
ArrayList<String> stringArrayList = new ArrayList<>(stringList);

 

primitive 타입의 배열인 경우 Arrays.asList()를 사용하면 List<래퍼 클래스>로 받을 수 없다.

int[] intArray = {1, 2, 3};
// 컴파일 에러
// List<Integer> intList = Arrays.asList(intArray);

 

따라서 primitive 타입의 배열은 반복문을 이용하거나 stream을 이용한 박싱을 해야한다.

int[] intArray = {1, 2, 3};

ArrayList<Integer> intArrayList = new ArrayList<>();
for (int i : intArray) {
	intArrayList.add(i);
}

// 또는
intArrayList = Arrays.stream(intArray).boxed().collect(Collectors.toList());

// 또는
intArrayList = IntStream.of(intArray).boxed().collect(Collectors.toList());