- Распечатать массив в Java
- Как печатать одномерные массивы?
- 1. Цикл for или расширенный цикл for
- 2. Arrays учебный класс — toString() или же deepToString() метод
- 3. Apache Commons Lang – ArrayUtils.toString() метод
- 4. Поток Java 8
- 5. Arrays.asList() или Guava Ints.asList()
- Rukovodstvo
- статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
- Как напечатать массив на Java
- Введение Печать массива — это быстрый способ дать нам представление о значениях содержимого внутри. Иногда значения массива являются желаемым результатом работы программы. В этой статье мы рассмотрим, как распечатать массив в Java четырьмя различными способами. Хотя «лучший способ» зависит от того, что нужно делать вашей программе, мы начнем с простейшего метода печати, а затем покажем более подробные способы сделать это. * Распечатать массив с помощью Arrays.toString () и Arrays.deepToString () * Печать
- Вступление
- Распечатайте массив с помощью Arrays.toString () и Arrays.deepToString ()
- Печать массива с использованием потоков Java 8
- Распечатать массив путем преобразования в список
- Распечатать массив с помощью циклов For
- Преобразование в список и использование итератора
- Заключение
Распечатать массив в Java
Напишите программу для печати одномерных и многомерных массивов на Java.
Как печатать одномерные массивы?
1. Цикл for или расширенный цикл for
Наивным подходом будет использование цикла for, как показано ниже:
Мы можем заменить приведенный выше цикл for улучшенным циклом for, как показано ниже:
2. Arrays учебный класс — toString() или же deepToString() метод
Другим простым решением было бы просто использовать Arrays.toString(Object[] a) метод, который вернет строковое представление содержимого указанного массива. Мы также можем использовать Arrays.deepToString(Object[] a) который возвращает строковое представление “глубокого содержимого” указанного массива, т. е. если массив содержит в качестве элементов другие массивы, строковое представление включает их содержимое и т.д.
результат:
[1, 2, 3, 4, 5][1, 2, 3, 4, 5]
3. Apache Commons Lang – ArrayUtils.toString() метод
Arrays.toString() а также Arrays.deepToString() будет работать только на Java SE 5 и выше. Apache Commons предоставляет ArrayUtils.toString() метод, аналогичный Arrays.deepToString() и выводит массив в виде строки. Ниже приведены его отличия от Arrays.deepToString() :
- Строковое представление элементов массива заключено в фигурные скобки. <> в отличие от квадратных скобок [] .
- Соседние элементы разделяются только запятой (а не пробелом).
- Предусмотрена поддержка печати многомерных массивов.
4. Поток Java 8
В Java SE 8 и выше мы можем использовать потоки для печати массива. Ниже приведены две терминальные операции, которые мы можем применить к потоку для печати массива.
- Получить итератор в поток Iterator itr = Arrays.stream(arr).iterator(); .
- С использованием Stream.forEach
Arrays.stream(arr).forEach(System.out::println); .
Следующая программа демонстрирует это:
5. Arrays.asList() или Guava Ints.asList()
Для массива непримитивных объектов мы можем использовать Arrays.asList() как показано ниже: Arrays.asList() возвращает список фиксированного размера, поддерживаемый указанным массивом. Этот подход не рекомендуется, так как он включает создание списка в качестве промежуточного шага.
Похожий на Arrays.asList() метод в JDK, библиотека Google Guava имеет Ints.asList() который также возвращает список фиксированного размера.
Rukovodstvo
статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
Как напечатать массив на Java
Введение Печать массива — это быстрый способ дать нам представление о значениях содержимого внутри. Иногда значения массива являются желаемым результатом работы программы. В этой статье мы рассмотрим, как распечатать массив в Java четырьмя различными способами. Хотя «лучший способ» зависит от того, что нужно делать вашей программе, мы начнем с простейшего метода печати, а затем покажем более подробные способы сделать это. * Распечатать массив с помощью Arrays.toString () и Arrays.deepToString () * Печать
Вступление
Печать массива — это быстрый способ дать нам представление о значениях содержимого внутри. Иногда значения массива являются желаемым результатом работы программы.
В этой статье мы рассмотрим, как распечатать массив в Java четырьмя различными способами.
Хотя «лучший способ» зависит от того, что нужно делать вашей программе, мы начнем с простейшего метода печати, а затем покажем более подробные способы сделать это.
Распечатайте массив с помощью Arrays.toString () и Arrays.deepToString ()
Встроенный toString() — чрезвычайно простой способ распечатать отформатированные версии объектов в Java.
Каждый тип данных в Java считается классом, и по умолчанию каждый класс наследуется от java.lang.Object , корня иерархии классов Java. Вот почему в каждом классе есть метод toString() Однако массивы не переопределяют метод toString() для правильного форматирования вывода, а просто возвращает унаследованное значение, которое является хешем объекта.
Мы печатаем массивы с помощью toString() из класса в java.util.Arrays .
Возьмем этот пример, в котором мы печатаем значения массива целых чисел:
int[] intSequence = ; System.out.println(Arrays.toString(intSequence));
Приведенный выше код выведет следующее:
Обратите внимание, как все элементы разделены запятыми и заключены в квадратные скобки. Этот метод похож на визуальное представление массива.
Мы также можем использовать этот метод для печати массивов разных типов:
double[] doubleValues = ; System.out.println(Arrays.toString(doubleValues)); String[] stringValues = ; System.out.println(Arrays.toString(stringValues));
Это соответственно приводит к:
[5.5, 2.37, 9.9, 1.02] [alabama, arkansas, kentucky]
Метод toString() эффективен только для одномерных массивов. Когда у нас есть вложенные массивы, нам нужно использовать метод deepToString() :
double[][] coordinates = , >; System.out.println(Arrays.deepToString(coordinates)); String[][] songLines = , >; System.out.println(Arrays.deepToString(songLines));
[[40.5, 50.75], [22.25, 32.75]] [[Take your nose off my keyboard], [What you bothering me for?]]
Если вам нужно с первого взгляда deepToString() что находится в вашем массиве, лучше всего подойдут методы toString() и deepToString ().
Однако эти методы не позволяют форматировать вывод. Этот подход в основном является обходным решением того факта, что массивы по умолчанию toString()
Если вы предпочитаете некоторую гибкость форматирования, вы можете рассмотреть возможность использования Java 8 Streams .
Печать массива с использованием потоков Java 8
Один из вариантов печати массива — преобразовать его в поток объектов, а затем распечатать каждый элемент в потоке. У нас есть несколько вариантов использования потоков для печати нашего массива.
Например, мы можем напечатать наш массив построчно, вот так:
String[] languages = ; Arrays.stream(languages).forEach(System.out::println);
В этом случае мы используем статический метод stream() Arrays для создания последовательного потока наших данных. Для каждого элемента в нашем потоке мы вызываем на нем println() , заставляя его построчно отображаться следующим образом:
Примечание. Мы println() следующим образом: System.out::println . :: в Java — это оператор ссылки на метод. Функция forEach() может использовать лямбда-функцию или ссылку на метод.
В качестве альтернативы мы можем использовать класс Stream java.util.stream.Stream для аналогичного вызова функции println() в потоке данных нашего массива. Мы можем создать Stream из этих данных с помощью Stream.of() :
String[] languages = ; Stream.of(languages).forEach(System.out::println);
С помощью этого кода мы получим тот же результат:
Давайте попробуем это и с вложенными массивами, добавив даты выпуска начальных версий этих языков:
String[][] languages = , , >; Arrays.stream(languages).forEach(System.out::println); // OR Stream.of(languages).forEach(System.out::println);
Вывод для каждой печати через потоки будет выглядеть примерно так:
[Ljava.lang.String;@e9e54c2 [Ljava.lang.String;@65ab7765 [Ljava.lang.String;@1b28cdfa
Это не очень хорошо работает . Мы снова вызываем println() для объектов массива. Нам придется снова передать эти объекты в поток и распечатать их элементы.
Чтобы распечатать вложенные массивы, мы можем использовать лямбда-выражение в функции forEach() которое может перейти на второй уровень, создав другой поток каждого уровня и распечатав записи таким образом:
String[][] languages = , , >; Arrays.stream(languages).forEach(s -> Arrays.stream(s).forEach(System.out::println)); // OR Stream.of(languages).forEach(s -> Arrays.stream(s).forEach(System.out::println));
Эта лямбда-функция печатает элементы в каждом вложенном массиве. При компиляции и выполнении мы получим такой вывод:
Java 1996 Python 1994 JavaScript 1995
Потоки упрощают работу с коллекциями. Но Java гибка и предоставляет еще больше возможностей. Традиционный цикл for по-прежнему многое делает для нас. Давайте посмотрим на печать массива с циклами.
Распечатать массив путем преобразования в список
Вы можете легко преобразовать массив Java в реализацию List Есть разные способы сделать это, и мы подробно рассмотрели каждый в нашей статье « Как преобразовать массив Java в ArrayList».
Короче говоря, вызов toString() или просто распечатка (которая неявно вызывает toString() ) в List распечатает содержимое:
Integer[] numbers = ; List numberList = Arrays.asList(numbers); System.out.println(numberList);
Кроме того, вы можете использовать .forEach() изначально для любой Collection , которой является List . Итак, вы можете просто пойти дальше и сделать это:
Integer[] numbers = ; Arrays.asList(numbers).forEach(System.out::println);
Хотя это не очень хорошо отформатированный вариант:
Вы можете отказаться от ссылки на метод и просто использовать лямбда для большего контроля:
Integer[] numbers = ; Arrays.asList(numbers) .forEach(number -> System.out.print(String.format("%d, ", number)));
Распечатать массив с помощью циклов For
Более известный подход к печати массива в Java — использование цикла for С помощью for мы получаем индекс элемента, и мы можем использовать индекс для получения элемента массива.
Мы настраиваем for с переменной, обычно называемой i , в качестве счетчика, начиная с элемента 0 . Затем следует условие, которое сравнивает i с количеством элементов в массиве.
Примечание . Число элементов в массиве, которые будут использоваться в условии цикла, никогда не следует жестко задавать. Java предоставляет атрибут с именем length который позволяет программисту динамически вычислять количество элементов в массиве.
И последнее, но не менее важное: for принимает инкрементное значение, в нашем случае мы будем использовать i++ чтобы увеличивать счетчик на один элемент в каждой итерации.
Как только наш цикл настроен и готов, мы просто воспользуемся System.out.println() для отображения каждого элемента в массиве, используя обозначение прямоугольных скобок [i] принимая в качестве входных данных наш счетчик i .
Вот пример, в котором мы печатаем все элементы целочисленного массива построчно:
int[] numbers = ; for (int i = 0; i
Выполнение этого кода выведет на консоль следующее:
Больше не нужно использовать циклы for Они довольно гибкие и концептуально простые. Например, если у вас были вложенные массивы, вы будете использовать вложенные циклы for
Наконец, давайте взглянем на итераторы и списки.
Преобразование в список и использование итератора
Объект итератора Java позволяет нам отображать каждый элемент нашего массива без необходимости использовать индексный подход, который мы рассмотрели в разделе цикла for
Чтобы использовать итераторы, мы должны изменить тип данных массива на List . Мы можем сделать это с помощью Array.asList() и сохранить возвращаемые значения списка в новой переменной. Метод asList() принимает массив и превращает его в реализацию List
Затем вам понадобится объект-итератор для настройки итератора массива. Итератор похож на указатель, указывающий на каждый элемент массива. Итератор помогает вам исследовать каждый элемент в индивидуальном порядке.
Чтобы создать объект-итератор, мы будем использовать метод iterator() нашего List . После того, как наш объект итератора был создан мы используем while цикл , как это предлагает более компактный способ печати каждого элемент возвращения итератора.
В while условие цикла будет содержать призыв к hasNext() метод нашего итератора. Внутри в while цикла, мы выводим каждый элемент с помощью вызова System.out.println() . Мы получаем элементы из итератора, вызывая метод next() . В while цикл будет держать итерации над каждым элементом , пока мы не проходится наш массив (по List ).
Вот пример, в котором мы берем массив целых чисел и печатаем каждый элемент построчно с помощью итератора:
Integer[] numbers = ; List numberList = Arrays.asList(numbers); Iterator numberIterator = numberList.iterator(); while(numberIterator.hasNext())
По сравнению с циклами for этот метод предпочитают разработчики, которые предпочитают не иметь дело с индексами массивов. Вам гарантирован следующий элемент с помощью next() . Итераторы мощны, потому что мы используем этот же поток для любого типа List такого как ArrayList или LinkedList , а также для других коллекций, таких как Map или Set !
Заключение
В этой статье мы рассмотрели основные методы, используемые для печати массива в Java. Мы начали с использования встроенных методов Java toString() и deepToString() .
Оттуда мы использовали потоки, чтобы мы могли быстро печатать элементы массива построчно. Мы также рассмотрели, как преобразовать массив в список, который вы можете либо просто вызвать, либо использовать Java 8 Stream API для более детального контроля.
Затем мы использовали традиционную for для печати каждого элемента по отдельности.
И последнее , но не в последнюю очередь, мы использовали объект итератора для печати каждый элемент по отдельности с помощью next() метод внутри в while цикла. Подходы, описанные в этой главе, могут использоваться в зависимости от варианта использования и проблемы, которую вы пытаетесь решить.
Licensed under CC BY-NC-SA 4.0