🔥 🚀 Важно для всех, кто работает с Java! 🔥
На JavaRocks ты найдешь уникальные туториалы, практические задачи и редкие книги, которых не найти в свободном доступе. Присоединяйся к нашему Telegram-каналу JavaRocks — стань частью профессионального сообщества!
Зачем нужно выводить массивы на экран в Java?
Java предоставляет структуру данных Array
для хранения различных элементов одного типа данных. Элементы хранятся в буфере памяти (contiguous memory). Чтобы отобразить содержимое массива, необходимо вывести элементы через println
Методы печати массива в Java
В Java существует множество различных способов вывести массив. Вы можете использовать обход с помощью циклов for или использовать методы стандартной библиотеки. Вот способы печати массивов в Java, которые мы рассмотрим в этой статье.
- цикл
for
- цикл
for each
- Метод
Arrays.toString()
- Метод
Arrays.toList()
- Java
Iterators
Метод I – Печать массива с помощью цикла for
Для начала это самый простой способ. Вот как вы можете это сделать.
public class printArrayMethod1 {
public static void main(String[] args) {
String[] monthsOfTheYear = {"January", "February", "March",
"April", "May", "June",
"July", "August", "September",
"October", "November", "December" };
System.out.println("Months of the year are as follows:");
for (int i = 0; i < monthsOfTheYear.length; i++) {
System.out.println(monthsOfTheYear[i]);
}
}
}
Run CodeВывод
Months of the year are as follows:
January
February
March
April
May
June
July
August
September
October
November
December
Метод II – Печать массива с помощью цикла for each
Цикл For each
– это другая форма базового цикла for
. Здесь вам не нужно инициализировать и увеличивать итератор цикла. Цикл напрямую обходит элементы массива. Более простой способ.
public class printArrayMethod2 {
public static void main(String[] args) {
String[] monthsOfTheYear = {"January", "February", "March",
"April", "May", "June",
"July", "August", "September",
"October", "November", "December" };
System.out.println("Months of the year are as follows:");
for (String month : monthsOfTheYear) {
System.out.println(month);
}
}
}
Run CodeВывод
Months of the year are as follows:
January
February
March
April
May
June
July
August
September
October
November
December
Метод III – Использование массивов стандартной библиотеки
Метод Java Arrays.toString()
предоставляется классом java.util.Arrays
. В качестве входного параметра он принимает массив. Массив может быть любого примитивного типа. Позже массив преобразуется в строку перед выводом в консоль.
import java.util.Arrays;
public class printArrayMethod3 {
public static void main(String[] args) {
String[] monthsOfTheYear = {"January", "February", "March",
"April", "May", "June",
"July", "August", "September",
"October", "November", "December" };
System.out.println("Months of the year are as follows:");
System.out.println(Arrays.toString(monthsOfTheYear));
}
}
Run CodeВывод
Как видно из вывода, на консоль выводятся все элементы массива, разделенные запятыми.
Months of the year are as follows:
[January, February, March, April, May, June, July, August, September, October, November, December]
Метод IV – Использование стандартных библиотечных массивов методом asList
Метод Java Arrays.asList()
также предоставляется классом java.util.Arrays
. В качестве параметра ему может быть передан массив данных примитивных типов. Впоследствии на консоль выводится представление входного массива в виде списка.
import java.util.Arrays;
public class printArrayMethod4 {
public static void main(String[] args) {
String[] monthsOfTheYear = {"January", "February", "March",
"April", "May", "June",
"July", "August", "September",
"October", "November", "December" };
System.out.println("Months of the year are as follows:");
System.out.println(Arrays.asList(monthsOfTheYear));
}
}
Вывод
Months of the year are as follows:
[January, February, March, April, May, June, July, August, September, October, November, December]
Метод V – Использование итераторов для обхода массива
Это немного продвинутый метод. Прежде чем приступить к нему, вы можете ознакомиться с фреймворком коллекций в Java. Java предоставляет интерфейс под названием “iterator”, присутствующий в пакете java.util
. Объект итератора используется для обхода объектов класса Collection
. Поэтому в следующем примере перед использованием итератора массив необходимо преобразовать в “List”.
import java.util.Arrays;
import java.util.Iterator;
public class printArrayMethod5 {
public static void main(String[] args) {
String[] monthsOfTheYear = {"January", "February", "March",
"April", "May", "June",
"July", "August", "September",
"October", "November", "December" };
System.out.println("Months of the year are as follows:");
Iterator<String> itr = Arrays.asList(monthsOfTheYear).iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
}
}
}
Run CodeВывод
Months of the year are as follows:
January
February
March
April
May
June
July
August
September
October
November
December
Чтобы закрепить полученные знания, мы предлагаем вам посмотреть видеоурок из нашего курса по Java. Язык – English
Вы уже научились печатать простые массивы с помощью таких методов, как Arrays.toString()
, но с многомерными массивами все сложнее. К счастью, в Java есть метод Arrays.deepToString()
. Этот метод идеально подходит для тех случаев, когда вы хотите увидеть содержимое вложенных массивов
Почему Arrays.deepToString() это геймченджер?
Метод Arrays.toString()
обрабатывает только одномерные массивы. Если вы попытаетесь вывести двумерный массив с помощью Arrays.toString()
, вы получите что-то белеберду вроде [[I@6d06d69c
, . Именно здесь на помощь приходит Arrays.deepToString()
, позволяющая получить человекочитаемое представление многомерных массивов.
Вот пример:
import java.util.Arrays;
public class DeepToStringExample {
public static void main(String[] args) {
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
System.out.println(\"Using Arrays.toString():\");
System.out.println(Arrays.toString(matrix));
System.out.println(\"\\nUsing Arrays.deepToString():\");
System.out.println(Arrays.deepToString(matrix));
}
}
Run CodeПри выполнении этого кода Arrays.toString()
выводит кучу адресов памяти, а Arrays.deepToString()
– что-то вроде [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
, что гораздо проще для чтения и понимания.
Разница между Arrays.toString() и Arrays.deepToString()
Так в чем же реальная разница? Arrays.toString()
отлично подходит для одномерных массивов, но не может отобразить многомерные массивы в удобочитаемом виде. С другой стороны, Arrays.deepToString()
выполняет итерации по вложенным массивам и выводит их в более структурированном формате.
Короче говоря, Arrays.toString()
– это ваша палочка-выручалочка для одномерных массивов. Как только вы начнете работать с вложенными массивами используйте Arrays.deepToString(
)
Форматирование многомерных массивов с помощью Arrays.deepToString()
По умолчанию Arrays.deepToString()
выводит все в одну строку. В большинстве случаев этого вполне достаточно, но не всегда. Давайте посмотрим, как разбить вывод на несколько строк с помощью небольшого трюка с манипуляцией строками. Это всего лишь один из подходов, поэтому не стесняйтесь адаптировать его под себя.
import java.util.Arrays;
public class CustomFormatExample {
public static void main(String[] args) {
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
String rawOutput = Arrays.deepToString(matrix);
String formatted = rawOutput
.replace(\"],\", \"],\\n\")
.replace(\"[[\", \"[\\n[\")
.replace(\"]]\", \"]\\n]\");
System.out.println(\"Formatted 2D Array:\\n\" + formatted);
}
}
Run CodeВ этом примере мы берем вывод из Arrays.deepToString()
и добавляем новые пустые строки. В результате мы получаем более чистый многострочный вывод.
Заключение
Мы представили краткий обзор различных методов вывода элементов массива. Эти примеры были основаны на типе данных String. Однако мы рекомендуем вам экспериментировать с различными примитивными и непримитивными типами данных.
Перевод статьи «How to Print an Array in Java».