Распечатать массив в Java
Напишите программу для печати одномерных и многомерных массивов на Java.
Как печатать одномерные массивы?
1. Цикл for или расширенный цикл for
Наивным подходом будет использование цикла for, как показано ниже:
class Main
public static void main ( String [ ] args )
for ( int i = 0 ; i < arr . length ; i ++ ) <
System . out . println ( arr [ i ] ) ;
Мы можем заменить приведенный выше цикл for улучшенным циклом for, как показано ниже:
class Main
public static void main ( String [ ] args )
for ( int value : arr ) <
System . out . println ( value ) ;
2. Arrays учебный класс — toString() или же deepToString() метод
Другим простым решением было бы просто использовать Arrays.toString(Object[] a) метод, который вернет строковое представление содержимого указанного массива. Мы также можем использовать Arrays.deepToString(Object[] a) который возвращает строковое представление “глубокого содержимого” указанного массива, т. е. если массив содержит в качестве элементов другие массивы, строковое представление включает их содержимое и т.д.
import java . util . Arrays ;
class Main
public static void main ( String [ ] args )
Integer [ ] arr = < 1 , 2 , 3 , 4 , 5 >;
System . out . println ( Arrays . toString ( arr ) ) ;
System . out . println ( Arrays . deepToString ( arr ) ) ;
результат:
[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() :
- Строковое представление элементов массива заключено в фигурные скобки. <> в отличие от квадратных скобок [] .
- Соседние элементы разделяются только запятой (а не пробелом).
- Предусмотрена поддержка печати многомерных массивов.
import org . apache . commons . lang3 . ArrayUtils ;
class Main
public static void main ( String [ ] args )
System . out . println ( ArrayUtils . toString ( arr ) ) ;
4. Поток Java 8
В Java SE 8 и выше мы можем использовать потоки для печати массива. Ниже приведены две терминальные операции, которые мы можем применить к потоку для печати массива.
- Получить итератор в поток Iterator itr = Arrays.stream(arr).iterator(); .
- С использованием Stream.forEach
Arrays.stream(arr).forEach(System.out::println); .
Следующая программа демонстрирует это:
import java . util . Arrays ;
class Main
public static void main ( String [ ] args )
Arrays . stream ( arr ) . forEach ( System . out :: println ) ;
5. Arrays.asList() или Guava Ints.asList()
Для массива непримитивных объектов мы можем использовать Arrays.asList() как показано ниже: Arrays.asList() возвращает список фиксированного размера, поддерживаемый указанным массивом. Этот подход не рекомендуется, так как он включает создание списка в качестве промежуточного шага.
Похожий на Arrays.asList() метод в JDK, библиотека Google Guava имеет Ints.asList() который также возвращает список фиксированного размера.
JAVA. Вывести массив
В общем, мне нужно вывести готовый массив digits[] после проделанных операций. Пытался вывести с помощью System.out.print(plusOne(new int[] <3, 4, 2, 6, 4>)); , но выводится только hash code: [I@3fee733d . Пытался даже просто вызвать метод plusOne(new int[] <3, 4, 2, 6, 4>); , но затея плохая, так как метод сам по себе ничего не выводит, а лишь возвращает массив digits[] . (Код не мой, не догадался бы так решить, пока ничего не умею. P.S. код разобрал, понял как работает) Что делать?3,>
Отслеживать
671 4 4 серебряных знака 19 19 бронзовых знаков
задан 3 мар в 18:20
MiserySermon MiserySermon
3 4 4 бронзовых знака
Дубликат вопроса: Почему при выводе массива в консоли я вижу не то, что хочу?
3 мар в 18:39
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Просто так массив вывести нельзя — выведется его хэшькод в 16ричной системе.
Первый способ — написать руками
public static void printArr(int[] arr) < for (int i = 0; i < arr.length; i++) < System.out.print(arr[i] + " "); >> //вызов printArr(new int[]);
Второй способ — воспользоваться готовой функцией из стандартной библиотеке
import java.util.Arrays; //. System.out.println(Arrays.toString(new int[]));
Как распечатать массив в java
Чтобы распечатать массив в Java, нужно использовать статический метод toString() из утилитного класса Arrays . Этот метод возвращает строковое представление массива, которое потом можно вывести на экран:
import java.util.Arrays; String[] fruits = "apple", "lemon", "banana">; // Так как метод статический, мы вызываем его из класса // а массив передаем в метод в качестве параметра System.out.println(Arrays.toString(fruits)); // => [apple, lemon, banana]
Java — Как напечатать массив
В этой статье мы покажем вам несколько способов печати массива Java.
1. Arrays.toString
Это самый простой способ напечатать массив — Arrays.toString (начиная с JDK 1.5)
package com.csharpcoderr.utils.print; import java.util.Arrays; public class PrintArray < public static void main(String[] args) < // массив String[] arrayStr = new String[]; System.out.println(Arrays.toString(arrayStr)); // Вывод: [Java, Node, Python, Ruby] int[] arrayInt = ; System.out.println(Arrays.toString(arrayInt)); // Вывод: [1, 3, 5, 7, 9] // 2d массив, нужен Arrays.deepToString String[][] deepArrayStr = new String[][], >; System.out.println(Arrays.toString(deepArrayStr)); // Вывод: [[Ljava.lang.String; @ 23fc625e, [Ljava.lang.String; @ 3f99bd52] System.out.println(Arrays.deepToString(deepArrayStr)); // Вывод: [[mkyong1, mkyong2], [mkyong3, mkyong4] int[][] deepArrayInt = new int[][]<, >; System.out.println(Arrays.toString(deepArrayInt)); // Вывод: [[I @ 3a71f4dd, [I @ 7adf9f5f] System.out.println(Arrays.deepToString(deepArrayInt)); // Вывод: [[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]] > >
[Java, Node, Python, Ruby] [1, 3, 5, 7, 9] [[Ljava.lang.String; @ 23fc625e, [Ljava.lang.String; @ 3f99bd52] [[mkyong1, mkyong2], [mkyong3, mkyong4]] [[I @ 3a71f4dd, [I @ 7adf9f5f] [[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]]
2. JDK 8 Stream
В JDK 8 мы можем преобразовать его в поток и распечатать.
package com.csharpcoderr.utils.print; import java.util.Arrays; public class PrintArray < public static void main(String[] args) < // массив String[] arrayStr = new String[]; Arrays.stream(arrayStr).forEach(System.out::println); int[] arrayInt = ; Arrays.stream(arrayInt).forEach(System.out::println); // 2d массив String[][] deepArrayStr = new String[][], >; Arrays.stream(deepArrayStr).flatMap(x -> Arrays.stream(x)).forEach(System.out::println); int[][] deepArrayInt = new int[][]<, >; Arrays.stream(deepArrayInt).flatMapToInt(x -> Arrays.stream(x)).forEach(System.out::println); > >
Джава Узел питон Рубин 1 3 5 7 9 mkyong1 mkyong2 mkyong3 mkyong4 1 3 5 7 9 2 4 6 8 10
3. Джсон что-нибудь
Это мой метод поддержки, используйте библиотеку Jackson2 для печати чего-либо в формате JSON.
ЧИТАТЬ ТАКЖЕ: Как использовать учебник Mkyong
package com.csharpcoderr.utils.print; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; public class PrintUtils < private static final ObjectMapper om = new ObjectMapper(); public static void print(Object object) < String result; try < result = om.writerWithDefaultPrettyPrinter().writeValueAsString(object); System.out.println(result); >catch (JsonProcessingException e) < e.printStackTrace(); >> >
package com.csharpcoderr.utils.print; public class PrintArray < public static void main(String[] args) < // массив String[] arrayStr = new String[]; PrintUtils.print(arrayStr); int[] arrayInt = ; PrintUtils.print(arrayInt); // 2d массив String[][] deepArrayStr = new String[][], >; PrintUtils.print(deepArrayStr); int[][] deepArrayInt = new int[][]<, >; PrintUtils.print(deepArrayInt); > >
[Java, Node, Python, Ruby] [1, 3, 5, 7, 9] [[mkyong1, mkyong2], [mkyong3, mkyong4]] [[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]]
Рекомендации
- Steam Javasoc
- Массивы JavaDoc
- Jackson 2 конвертирует Java-объект в JSON
- Джексон 2 официальный сайт