До 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
John
Mary
Боб
Печать многомерного массива
На всякий случай, если мы хотим напечатать многомерный массив, мы можем использовать 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]]
[[Джон, Браво], [Мэри, Ли], [Боб, Джонсон]]
11
12
21
22
31
32
33
John
Bravo
Mary
Lee
Боб
Johnson