언어+프레임워크/JAVA

[JAVA] 코테 기본기(2): 배열 to 리스트 변환 완벽 정리

깃짱 2025. 9. 5. 08:00
반응형
반응형

 

자바 코딩테스트에서 배열을 리스트로 변환하는 경우가 종종 있습니다. 자바에서는 배열 타입(int[], String[], Integer[] 등)에 따라 방법이 달라집니다. 이번 편은 중요도는 아주 높지는 않지만 모르면 당황스럽기 때문에 정리해보려고 합니다!

🌏 배열 → 리스트 변환

✅ 1. 객체 배열 (Integer[], String[] 등)

보통 배열을 쓸 때는 String 제외하고는 객체(boxed) 형태로 쓰지는 않기 때문에 String[]의 경우에 이렇게 사용한다 정도로 생각하면 좋을 것 같습니다.

String[] arr = {"apple", "banana", "cherry"};

// 1) Arrays.asList()
List<String> list1 = Arrays.asList(arr);
// 고정 크기 리스트 (추가/삭제 불가)

// 2) ArrayList 생성자로 감싸기
List<String> list2 = new ArrayList<>(Arrays.asList(arr));
// 수정 가능 (추가/삭제 가능)

// 3) Collections.addAll()
List<String> list3 = new ArrayList<>();
Collections.addAll(list3, arr);

✅ 2. 기본형 배열 (int[], double[] 등)

Arrays.asList()는 기본형 배열을 직접 처리하지 못합니다. 가장 골치아프고 당황스러울 수 있는 케이스입니다. 따라서 스트림(Stream)이나 반복문을 사용해야 합니다. 스트림이 생각난다면 사용하고, 그냥 모르겠으면 반복문으로 추가하는 것이 안전합니다!

int[] arr = {1, 2, 3, 4, 5};

// 1) 반복문 사용
List<Integer> list1 = new ArrayList<>();
for (int x : arr) list1.add(x);

// 2) Stream 사용 (자바 8 이상)
List<Integer> list2 = Arrays.stream(arr) // IntStream
                            .boxed()     // int → Integer
                            .toList();   // List<Integer> (Java 16 이상)

// 3) Collectors 사용 (Java 8~15)
List<Integer> list3 = Arrays.stream(arr)
                            .boxed()
                            .collect(Collectors.toList());

✅ 3. 2차원 배열 (int[][] → List<int[]>)

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

// 배열 그대로 List로 (int[] 단위)
List<int[]> list = Arrays.asList(arr2d);

// 각 원소를 List<Integer>로 변환
List<List<Integer>> nestedList = Arrays.stream(arr2d)
                                       .map(a -> Arrays.stream(a).boxed().toList())
                                       .toList();

사실 이렇게까지 사용할 경우는 많지는 않은 것 같습니다.

 

도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!

 

반응형