Java 8之前的版本
我们本来可以Arrays.toString(array)
打印一维数组,也可以打印Arrays.deepToString(array)
多维数组。
Java 8
现在,我们可以选择Stream
和lambda
打印数组。
打印一维数组:
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[]>
然后返回方法的情况下,将flatMapToInt()
流的每个元素与通过将提供的映射函数应用于每个元素而生成的映射流的内容进行映射。
输出为:
[[11,12],[21,22],[31,32,33]]
[[John,Bravo],[Mary,Lee],[Bob,Johnson]]
11
12
21
22
31
32
33
John
Bravo
Mary
李
·鲍勃·
约翰逊