Java

配列の値をfor文を使わずに出力する方法

Javaで配列をコンソールに表示したいとき、これまではfor文などを記述していたのですが、Arrays.toStringメソッドを使うことで楽に表示することができます。

参考にしたページ

サンプル
int[] a = {1, 2};   

// これまで
for (int i: a) {
    System.out.println(i);
}
// または
Arrays.stream(a).forEach(System.out::println);

// これから
System.out.println(Arrays.toString(a));

// 注意
System.out.println(a.toString());
コンソール
1
2
1
2
[1, 2]
[I@bebdb06

上記の3つのものを比較すると,Arrays.toStringメソッドが一番すっきり書けます.Stream APIを使った方法もいいような気がしますが,これは多次元配列を扱う際に記述が難しくなるので,Arrays.toStringがベターです.

ちなみに最後のようにa.toString()とすると,配列変数のハッシュ値が表示されてしまいます.また,System.out.printlnなどの標準出力メソッドでは,内部で引数のtoString()が呼ばれるようになっているので,System.out.println(sb.toString());などの冗長な書き方は控えましょう.

多次元配列のとき

deepToStringメソッドを使いましょう。

String[][] sss = {{"a","bb"}, {"ccc"}};

System.out.println(Arrays.toString(sss));
System.out.println(Arrays.deepToString(sss));
コンソール
[[Ljava.lang.String;@bebdb06, [Ljava.lang.String;@7a4f0f29]
[[a, bb], [ccc]]

まとめ

配列を標準出力したいときはArrays.toStringArrays.deepToStringメソッドを使いましょう.