본문 바로가기
Language/Java

[Java] List<int[]> 를 int[][] 로 변환

by 1000zoo 2023. 9. 6.

이중 배열을 생성해야 할 때, 총 길이가 얼마나 될 지 모르는 경우, List를 사용하여 문제를 해결하곤 한다.

이때 List, 즉 타입이 List<int[]> 인 녀석을 int[][]로 변경해주어야 할 때, 아래와 같이 변경해 줄 수 있다.

List<int[]> list = new ArrayList<>();
...	// list 채우는 과정 생략

int[][] array = new int[list.size()][];
for (int i = 0; i < array.length; i++) {
	array[i] = list.get(i);
}

나쁘지 않은 방법이지만, Stream을 사용하여 보다 간결하게 변경해 줄 수 있었다.

int[][] array = aList.stream().toList().toArray(new int[0][]);

하지만, stream()의 toList() 는 Java 17 버전 때 추가된 메소드로, 그 이전 버전에서는 사용할 수 없었다. (프로그래머스 등)

따라서 아래의 방식으로 변경하여 사용했어야 했다. 사용하기 위해서, java.util.stream.Collectors 를 import 해야한다.

int[][] aarr = aList.stream().collect(Collectors.toList()).toArray(new int[0][]);

단순히 변환을 위한 경우에는 상관이 없지만, 두 메소드 (toList()와 collect()) 사이에는 약간의 차이가 있긴 했다. 하지만 이 포스트의 내용과는 크게 관련이 없는 것 같았다.

toList()의 경우, 반환받은 List의 내용을 변경할 수 없지만, collect()의 경우 가능했다.

'Language > Java' 카테고리의 다른 글

[Java] Functional Interface  (0) 2023.10.24
[Java] Google Java Style Guide 번역  (0) 2023.10.17
[Java] JDK Java version 변경하기 (M1)  (0) 2023.09.25
[Java] 정규식 정리 (Regular Expression)  (0) 2023.09.21
[Java] Deque 알아보기  (0) 2023.09.04