Java 8より前
Arrays.toString(array)
1次元配列および多次元配列を出力するArrays.deepToString(array)
ために使用できたはずです。
Java 8
今、私たちはのオプションを持っているStream
とlambda
、アレイを印刷します。
1次元配列の印刷:
public static void main(String[] args) {
int[] intArray = new int[] {1, 2, 3, 4, 5};
String[] strArray = new String[] {"John", "Mary", "Bob"};
//Prior to Java 8
System.out.println(Arrays.toString(intArray));
System.out.println(Arrays.toString(strArray));
// In Java 8 we have lambda expressions
Arrays.stream(intArray).forEach(System.out::println);
Arrays.stream(strArray).forEach(System.out::println);
}
出力は次のとおりです。
[1、2、3、4、5]
[ジョン、メアリー、ボブ]
1
2
3
4
5
ジョン
メアリー
ボブ
印刷多次元配列
、我々は我々が使用することができます多次元配列印刷したい念のArrays.deepToString(array)
ように:
public static void main(String[] args) {
int[][] int2DArray = new int[][] { {11, 12}, { 21, 22}, {31, 32, 33} };
String[][] str2DArray = new String[][]{ {"John", "Bravo"} , {"Mary", "Lee"}, {"Bob", "Johnson"} };
//Prior to Java 8
System.out.println(Arrays.deepToString(int2DArray));
System.out.println(Arrays.deepToString(str2DArray));
// In Java 8 we have lambda expressions
Arrays.stream(int2DArray).flatMapToInt(x -> Arrays.stream(x)).forEach(System.out::println);
Arrays.stream(str2DArray).flatMap(x -> Arrays.stream(x)).forEach(System.out::println);
}
ここで注目すべき点は、Arrays.stream(T[])
がint[]
返された場合にStream<int[]>
method flatMapToInt()
がストリームの各要素を、提供されたマッピング関数を各要素に適用することによって生成されたマップ済みストリームのコンテンツにマップすることです。
出力は次のとおりです。
[[11、12]、[21、22]、[31、32、33]]
[[ジョン、ブラボー]、[メアリー、リー]、[ボブ、ジョンソン]]
11
12
21
22
31
32
33
ジョン
ブラボー
メアリー
リー
ボブ
ジョンソン