■概要
多次元(1, 2, 3, 4, ・・・, N次元)の配列に対して、要素を1つずつ取得し、表示する。
また、複合的な次元の配列に対しても、要素を1つずつ取得できるようにする。
▼サンプルの多次元配列
以下に今回使用する、多次元配列を示す。
・1次元配列
[ 1, 2, 3]
・2次元配列
[
[1, 2, 3],
[4, 5, 6]
]
・3次元配列
[
[
[1, 2],
[3, 4]
],
[
[5, 6],
[7, 8]
]
]
・4次元配列
[
[
[
[1, 2],
[3, 4]
],
[
[5, 6],
[7, 8]
]
],
[
[
[9, 10],
[11, 12]
],
[
[13, 14],
[15, 16]
]
]
]
・多次元配列
[
[1, 2, 3],
[
[4, 5],
[
[6],
[7, 8]
]
],
9
]
■フローチャート
以下に多次元の配列に対して、要素を1つずつ取得し、表示する処理のフローチャートを示す。
■サンプルコード
以下に多次元の配列に対して、要素を1つずつ取得し、表示する処理とメイン処理のサンプルコードを示す。
・RecursiveMultidimensionalArraysUtil.java
package util;
import java.lang.reflect.Array;
public class RecursiveMultidimensionalArraysUtil {
// 再帰的に多次元配列を表示するメソッド
public static void printArray(Object data) {
// null 判定処理
if (data == null) {
return;
}
// 配列が存在するか
if (data.getClass().isArray()) {
// 配列先頭文字出力
System.out.print("[");
// 配列の要素数
int length = Array.getLength(data);
// 配列の要素数分繰り返し
for (int i = 0; i < length; i++) {
/* 再帰処理:配列のi番目の要素(配列 or 数値)
ex)
data: [1, 2, 3], i: 1 -> 2
data: [[1, 2], [3, 4]], i: 0 -> [1, 2]
*/
printArray(Array.get(data, i));
if (i < length - 1) {
// データ間の場合はカンマ+スペースを挿入
System.out.print(", ");
}
}
// 配列末尾文字出力
System.out.print("]");
} else {
// 配列でなければ値を表示
System.out.print(data);
}
}
}
・RecursiveMultidimensionalArraysMain.java
import static util.RecursiveMultidimensionalArraysUtil.printArray;
public class RecursiveMultidimensionalArraysMain {
public static void main(String[] args) {
// 1次元配列
int[] array1D = {
1, 2, 3
};
// 2次元配列
int[][] array2D = {
{1, 2, 3},
{4, 5, 6}
};
// 3次元配列
int[][][] array3D = {
{{1, 2}, {3, 4}},
{{5, 6}, {7, 8}}
};
// 4次元配列
int[][][][] array4D = {
{
{{1, 2}, {3, 4}},
{{5, 6}, {7, 8}}
},
{
{{9, 10}, {11, 12}},
{{13, 14}, {15, 16}}
}
};
// 多次元配列(不規則な多次元)
Object jagged = new Object[]{
new int[]{1, 2, 3},
new Object[]{
new int[]{4, 5},
new int[][]{{6}, {7, 8}}
},
9
};
System.out.println("=== 1次元 ===");
printArray(array1D);
System.out.println("\n=== 2次元 ===");
printArray(array2D);
System.out.println("\n=== 3次元 ===");
printArray(array3D);
System.out.println("\n=== 4次元 ===");
printArray(array4D);
System.out.println("\n=== 多次元 ===");
printArray(jagged);
}
}
■実行結果
以下にメイン処理を実行した結果を示す。
=== 1次元 ===
[1, 2, 3]
=== 2次元 ===
[[1, 2, 3], [4, 5, 6]]
=== 3次元 ===
[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
=== 4次元 ===
[[[[1, 2], [3, 4]], [[5, 6], [7, 8]]], [[[9, 10], [11, 12]], [[13, 14], [15, 16]]]]
=== 多次元 ===
[[1, 2, 3], [[4, 5], [[6], [7, 8]]], 9]
コメント