[Java] 2차원 배열 1차원 배열로 변환, 2가지 방법
May 04, 2024
2차원 배열을 1차원 배열로 변환하는 것을 평탄화(flatten)라고 하는데, 어떻게 하는지 알아보겠습니다.
1. for문을 이용한 방법
2중 for문을 사용하여 2차원 배열을 1차원 배열로 변환할 수 있습니다.
- 먼저 2차원 배열의 요소 개수만큼의 1차원 배열 생성
- 2중 for문으로 2차원 배열을 순회하면서 1차원 배열에 값 할당
import java.util.*;
public class Example {
public static void main(String[] args) {
int[][] multiArray = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int rows = multiArray.length;
int cols = multiArray[0].length;
int[] flatArray = new int[rows * cols];
// 2차원을 1차원으로 평탄화
int index = 0;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
flatArray[index++] = multiArray[i][j];
}
}
// 평탄화된 배열 출력
System.out.println(Arrays.toString(flatArray));
}
}
Output:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
2. Stream을 이용한 방법
Stream의 flatMapToInt()
를 사용하여 2차원 배열을 평탄화 할 수 있습니다.
- 2차원배열을 Stream으로 만듬
flatMapToInt(Arrays::stream)
: 2차원 배열을 평탄화toArray()
: 결과를 배열로 변환
import java.util.*;
public class Example {
public static void main(String[] args) {
int[][] multiArray = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 2차원을 1차원으로 평탄화
int[] flatArray = Arrays.stream(multiArray)
.flatMapToInt(Arrays::stream)
.toArray();
// 평탄화된 배열 출력
System.out.println(Arrays.toString(flatArray));
}
}
Output:
[1, 2, 3, 4, 5, 6, 7, 8, 9]