До Java 8 мы могли бы использовать Arrays.toString(array)
для печати одномерного массива и Arrays.deepToString(array)
для многомерных массивов. У нас есть опция Stream
и lambda
в Java 8, которая также может использоваться для печати массива.
Печать одномерного массива:
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] [John, Mary, Bob] 1 2 3 4 5 John Mary Bob
blockquote>Печать многомерного массива На всякий случай, когда мы хотим напечатать многомерный массив, мы можем использовать
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 Джон Браво Мэри Ли Боб Джонсон
blockquote>
Вы можете попытаться решить эти два пути -
Переместить сценарии в нижнюю часть файла перед закрывающим тегом </body>
. Таким образом, все элементы DOM загружаются до запуска любого JavaScript.
Попробуйте обернуть все элементы, зависящие от элементов DOM в window
load
событие внутри самих файлов сценариев, если вы не можете или не хотите переместить их в нижнюю часть:
window.addEventListener('load', function() {
/// init the resource here...
}, false);