では、これまでの基礎~応用の問題を踏まえて、難問バージョン(深い多次元配列 + null 混在) の練習問題を作ります。
特徴は以下の通りです:
- 3〜4 次元以上の配列
- 配列の途中に
nullが混在 - Object 配列 + プリミティブ配列の混合
- deepToString で正しく表示するかの理解を問う
問題 1
次の配列の出力を Arrays.deepToString で書きなさい。
int[][][] arr = {
{{1,2}, null},
{{3,4},{5,6}}
};
Java問題 2
Object 配列にプリミティブ配列と null が混ざっている場合、出力はどうなるか答えよ。
Object[] mixed = {
new int[]{1,2},
null,
"Hello"
};
System.out.println(Arrays.deepToString(mixed));
Java問題 3
4次元配列の一部に null が含まれる場合、deepToString の出力を予想せよ。
int[][][][] cube = new int[2][2][2][2];
cube[1][0] = null;
System.out.println(Arrays.deepToString(cube));
Java問題 4
次の多次元配列を deepToString で表示するコードを書け。
String[][][] data = {
{{"A","B"}, null},
{{"C"}, {"D","E"}}
};
Java問題 5
深さ 3 の配列に null と空配列を混ぜて初期化。
全体を deepToString で表示するコードを書け。
問題 6
Object 配列に int[], String[], null, String を混ぜて作る。
出力を deepToString で確認するコードを書け。
問題 7
次の配列を deepToString で表示するとどうなるか答えよ。
int[][][] arr = {
null,
{{1,2},{3,4}},
{{5}, null}
};
Java問題 8
多次元配列の一部に空配列と null を混ぜる。
表示結果を正しく出力するコードを書け。
String[][][] arr = {
{},
null,
{{"X"},{"Y"}}
};
Java問題 9
Object 配列の中に 3次元 int 配列、2次元 String 配列、null を混ぜて表示するコードを書け。
問題 10
深い多次元配列を初期化して一部 null を混ぜた場合、Arrays.toString と Arrays.deepToString の違いを説明せよ。
解答 1
int[][][] arr = {
{{1,2}, null},
{{3,4},{5,6}}
};
System.out.println(Arrays.deepToString(arr));
// 出力: [[[1, 2], null], [[3, 4], [5, 6]]]
Java解答 2
Object[] mixed = {
new int[]{1,2},
null,
"Hello"
};
System.out.println(Arrays.deepToString(mixed));
// 出力: [[1, 2], null, Hello]
Java解答 3
int[][][][] cube = new int[2][2][2][2];
cube[1][0] = null;
System.out.println(Arrays.deepToString(cube));
// 出力: [[[ [0,0],[0,0] ], [[0,0],[0,0]]], [null, [[0,0],[0,0]]]]
Java解答 4
String[][][] data = {
{{"A","B"}, null},
{{"C"}, {"D","E"}}
};
System.out.println(Arrays.deepToString(data));
// 出力: [[["A","B"], null], [["C"], ["D","E"]]]
Java解答 5
String[][][] arr = {
{{"A"}, {}},
null,
{{"B", "C"}}
};
System.out.println(Arrays.deepToString(arr));
Java解答 6
Object[] arr = {
new int[]{1,2},
new String[]{"X","Y"},
null,
"Hello"
};
System.out.println(Arrays.deepToString(arr));
// 出力: [[1, 2], [X, Y], null, Hello]
Java解答 7
int[][][] arr = {
null,
{{1,2},{3,4}},
{{5}, null}
};
System.out.println(Arrays.deepToString(arr));
// 出力: [null, [[1,2],[3,4]], [[5], null]]
Java解答 8
String[][][] arr = {
{},
null,
{{"X"},{"Y"}}
};
System.out.println(Arrays.deepToString(arr));
// 出力: [[], null, [["X"], ["Y"]]]
Java解答 9
Object[] arr = {
new int[][][] {{{1,2},{3,4}}},
new String[][] {{"A"},{"B","C"}},
null
};
System.out.println(Arrays.deepToString(arr));
Java解答 10
Arrays.toString→ 1次元の参照アドレスしか出ないArrays.deepToString→ 多次元配列も階層ごとに展開して表示
例:
int[][] arr = {{1,2},{3,4}};
System.out.println(Arrays.toString(arr)); // [[I@xxxx, [I@yyyy]
System.out.println(Arrays.deepToString(arr)); // [[1,2],[3,4]]
Java💡 ポイントまとめ
- null 混在配列 は deepToString でも
"null"として表示 - Object 配列 + 基本型配列混在 は deepToString が便利
- toString だけでは多次元配列の中身は見えない
- 深さの異なる多次元配列でも、deepToString は階層ごとに展開可能
