Функция вывода массива java

Содержание
  1. Rukovodstvo
  2. статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
  3. Как напечатать массив на Java
  4. Введение Печать массива — это быстрый способ дать нам представление о значениях содержимого внутри. Иногда значения массива являются желаемым результатом работы программы. В этой статье мы рассмотрим, как распечатать массив в Java четырьмя различными способами. Хотя «лучший способ» зависит от того, что нужно делать вашей программе, мы начнем с простейшего метода печати, а затем покажем более подробные способы сделать это. * Распечатать массив с помощью Arrays.toString () и Arrays.deepToString () * Печать
  5. Вступление
  6. Распечатайте массив с помощью Arrays.toString () и Arrays.deepToString ()
  7. Печать массива с использованием потоков Java 8
  8. Распечатать массив путем преобразования в список
  9. Распечатать массив с помощью циклов For
  10. Преобразование в список и использование итератора
  11. Заключение
  12. 10 часто используемых приёмов для работы с массивом в Java

Rukovodstvo

статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.

Как напечатать массив на Java

Введение Печать массива — это быстрый способ дать нам представление о значениях содержимого внутри. Иногда значения массива являются желаемым результатом работы программы. В этой статье мы рассмотрим, как распечатать массив в Java четырьмя различными способами. Хотя «лучший способ» зависит от того, что нужно делать вашей программе, мы начнем с простейшего метода печати, а затем покажем более подробные способы сделать это. * Распечатать массив с помощью Arrays.toString () и Arrays.deepToString () * Печать

Вступление

Печать массива — это быстрый способ дать нам представление о значениях содержимого внутри. Иногда значения массива являются желаемым результатом работы программы.

В этой статье мы рассмотрим, как распечатать массив в Java четырьмя различными способами.

Читайте также:  Java platform tm se binary has stopped working

Хотя «лучший способ» зависит от того, что нужно делать вашей программе, мы начнем с простейшего метода печати, а затем покажем более подробные способы сделать это.

Распечатайте массив с помощью 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

Источник

10 часто используемых приёмов для работы с массивом в Java

Java-университет

10 часто используемых приёмов для работы с массивом в Java - 1

Следующие 10 приёмов для массивов в Java являются часто используемыми. Они имеют самый высокий рейтинг в Stack Overflow – системе вопросов и ответов о программировании.

    Объявление массива
 String[] aArray = new String[5]; String[] bArray = ; String[] cArray = new String[]; 
 int[] intArray = < 1, 2, 3, 4, 5 >; String intArrayString = Arrays.toString(intArray); // print directly will print reference value System.out.println(intArray); // [I@7150bd4d System.out.println(intArrayString); // [1, 2, 3, 4, 5] 
 String[] stringArray = < "a", "b", "c", "d", "e" >; ArrayList arrayList = new ArrayList(Arrays.asList(stringArray)); System.out.println(arrayList); // [a, b, c, d, e] 
 String[] stringArray = < "a", "b", "c", "d", "e" >; boolean b = Arrays.asList(stringArray).contains("a"); System.out.println(b); // true 
 int[] intArray = < 1, 2, 3, 4, 5 >; int[] intArray2 = < 6, 7, 8, 9, 10 >; // Apache Commons Lang library int[] combinedIntArray = ArrayUtils.addAll(intArray, intArray2); 
 // containing the provided list of elements // Apache common lang String j = StringUtils.join(new String[] < "a", "b", "c" >, ", "); System.out.println(j); // a, b, c 
 String[] stringArray = < "a", "b", "c", "d", "e" >; ArrayList arrayList = new ArrayList(Arrays.asList(stringArray)); String[] stringArr = new String[arrayList.size()]; arrayList.toArray(stringArr); for (String s : stringArr) System.out.println(s); 
 Set set = new HashSet(Arrays.asList(stringArray)); System.out.println(set); //[d, e, b, c, a] 
 int[] intArray = < 1, 2, 3, 4, 5 >; ArrayUtils.reverse(intArray); System.out.println(Arrays.toString(intArray)); //[5, 4, 3, 2, 1] 
 int[] intArray = < 1, 2, 3, 4, 5 >; int[] removed = ArrayUtils.removeElement(intArray, 3);//create a new array System.out.println(Arrays.toString(removed)); 

И еще — создание массива типа byte на основе значения типа int (прим. берем ByteBuffer , выделяем в нем 4 байта и кладем число int 8, затем все это (0, 0, 0, 8) преобразуем в массив типа byte с помощью вызова array() )

 byte[] bytes = ByteBuffer.allocate(4).putInt(8).array(); for (byte t : bytes)

Источник

Оцените статью