반응형
반응형
자바 코딩테스트에서 배열을 리스트로 변환하는 경우가 종종 있습니다. 자바에서는 배열 타입(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();
사실 이렇게까지 사용할 경우는 많지는 않은 것 같습니다.

도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!
반응형
'언어+프레임워크 > JAVA' 카테고리의 다른 글
| [JAVA] 코테 기본기(4): 소수점 처리 완벽 정리 (0) | 2025.09.09 |
|---|---|
| [JAVA] 코테 기본기(3): 빠른 입출력 템플릿 (Scanner + System.out.println 쓰면 망해요!) (0) | 2025.09.08 |
| [JAVA] 코테 기본기(1): 정렬 완벽 정리 (0) | 2025.09.04 |
| [JAVA] 3가지 List 생성 방법 비교와 진정한 불변리스트 (불변리스트는 정말 객체까지 불변일까?) (1) | 2025.03.25 |
| [JAVA] try-with-resources를 사용해서 리소스 누수를 방지하자! (0) | 2023.09.29 |