Java | 配列の文字列表現 難問バージョン(深い多次元配列 + null 混在)

Java Java
スポンサーリンク

では、これまでの基礎~応用の問題を踏まえて、難問バージョン(深い多次元配列 + 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.toStringArrays.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.toString1次元の参照アドレスしか出ない
  • 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

💡 ポイントまとめ

  1. null 混在配列 は deepToString でも "null" として表示
  2. Object 配列 + 基本型配列混在 は deepToString が便利
  3. toString だけでは多次元配列の中身は見えない
  4. 深さの異なる多次元配列でも、deepToString は階層ごとに展開可能
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました