Начиная с Java 5 можно использовать Arrays.toString(arr)
или Arrays.deepToString(arr)
для массивов в массивах. Обратите внимание что Object[]
вызовы версии .toString()
на каждом объекте в массиве. Вывод даже украшен точным способом, которым Вы спрашиваете.
Примеры:
String[] array = new String[] {"John", "Mary", "Bob"};
System.out.println(Arrays.toString(array));
Вывод:
[John, Mary, Bob]
String[][] deepArray = new String[][] {{"John", "Mary"}, {"Alice", "Bob"}};
System.out.println(Arrays.toString(deepArray));
//output: [[Ljava.lang.String;@106d69c, [Ljava.lang.String;@52e922]
System.out.println(Arrays.deepToString(deepArray));
Вывод:
[[John, Mary], [Alice, Bob]]
double
Массив: double[] doubleArray = { 7.0, 9.0, 5.0, 1.0, 3.0 };
System.out.println(Arrays.toString(doubleArray));
Вывод:
[7.0, 9.0, 5.0, 1.0, 3.0 ]
int
Массив: int[] intArray = { 7, 9, 5, 1, 3 };
System.out.println(Arrays.toString(intArray));
Вывод:
[7, 9, 5, 1, 3 ]
Мы могли бы использовать Arrays.toString(array)
для печати одномерного массива и Arrays.deepToString(array)
для многомерных массивов.
Теперь у нас есть опция Stream
и lambda
для печати массива.
Печать одномерного массива:
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]
[Джон, Мэри, Боб]
1
2
3
4
5
Джон
Мэри
Боб
Печать многомерного массива На всякий случай, если мы хотим напечатать многомерный массив, мы можем использовать Arrays.deepToString(array)
as:
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]]
[[Джон, Браво], [Мэри, Ли], [Боб, Джонсон]]
11
12
21
22
31
32
33
Джон
Браво
Мэри
Ли
Боб
Джонсон
Он всегда должен работать независимо от того, какую версию JDK вы используете:
System.out.println(Arrays.asList(array));
Он будет работать, если Array
содержит объекты. Если Array
содержит типы примитивов, вы можете использовать классы-обертки, вместо этого сохраняя примитив непосредственно как ..
Пример:
int[] a = new int[]{1,2,3,4,5};
Заменить на:
Integer[] a = new Integer[]{1,2,3,4,5};
Обновление:
Да! Следует отметить, что преобразование массива в массив объектов или использование массива объектов является дорогостоящим и может замедлить выполнение. это происходит по природе Java называется автобоксом.
Так что только в целях печати, он не должен использоваться. мы можем сделать функцию, которая принимает массив в качестве параметра и печатает желаемый формат как
public void printArray(int [] a){
//write printing code
}
Использование обычного цикла для цикла , на мой взгляд, является самым простым способом печати массива. Здесь у вас есть пример кода, основанный на вашем intArray
for (int i = 0; i < intArray.length; i++) {
System.out.print(intArray[i] + ", ");
}
. Он дает выходные данные как ваши 1, 2, 3, 4, 5
.for(int n: someArray) {
System.out.println(n+" ");
}
Есть еще один способ, если ваш массив имеет тип char []:
char A[] = {'a', 'b', 'c'};
System.out.println(A); // no other arguments
abc
В JDK1.8 вы можете использовать агрегатные операции и лямбда-выражение:
String[] strArray = new String[] {"John", "Mary", "Bob"};
// #1
Arrays.asList(strArray).stream().forEach(s -> System.out.println(s));
// #2
Stream.of(strArray).forEach(System.out::println);
// #3
Arrays.stream(strArray).forEach(System.out::println);
/* output:
John
Mary
Bob
*/
Начиная с Java 8, можно также использовать метод join()
, предоставляемый классом String , чтобы распечатывать элементы массива без скобок и разделять их выбранным разделителем (который является пробел для примера, показанного ниже):
String[] greeting = {"Hey", "there", "amigo!"};
String delimiter = " ";
String.join(delimiter, greeting)
Вывод будет «Привет, амиго!».
Всегда проверяйте стандартные библиотеки сначала. Попробуйте:
System.out.println(Arrays.toString(array));
или если Ваш массив содержит другие массивы как элементы:
System.out.println(Arrays.deepToString(array));
При использовании Java 1.4 можно вместо этого сделать:
System.out.println(Arrays.asList(array));
(Это работает в 1,5 + также, конечно.)
toString является способом преобразовать массив для строкового представления.
кроме того, можно использовать:
for (int i = 0; i < myArray.length; i++){
System.out.println(myArray[i] + " ");
}
Это для цикла позволит Вам распечатать каждое значение своего массива в порядке.
Это приятно знать, однако, что касается «всегда сначала проверяйте стандартные библиотеки», я бы никогда не наткнулся на уловку массивов .toString (myarray)
- поскольку я сосредоточился на типе myarray, чтобы увидеть, как это сделать. Мне не хотелось повторять эту вещь: мне нужен простой вызов, чтобы он выглядел так, как я вижу в отладчике Eclipse, а myarray.toString () просто не делал этого.
import java.util.Arrays;
.
.
.
System.out.println( Arrays.toString( myarray ) );