Java数组打印的最简方法

Java数组打印的最简方法

技术背景

在Java编程中,经常需要将数组内容输出以便调试或展示。然而,直接调用数组的toString()方法往往不能得到期望的结果,而是输出数组的类型和哈希码。因此,需要寻找合适的方法来打印数组内容。

实现步骤

Java 5及之后版本

  • 一维数组:使用Arrays.toString(arr)方法。
  • 多维数组:使用Arrays.deepToString(arr)方法。

Java 8及之后版本

除了上述方法,还可以使用Streamlambda表达式。

  • 一维数组:使用Arrays.stream(arr).forEach(System.out::println)
  • 多维数组:使用Arrays.stream(arr).flatMapToInt(x -> Arrays.stream(x)).forEach(System.out::println)(对于int类型多维数组)。

Java 1.4版本

可以使用System.out.println(Arrays.asList(array)),但该方法要求数组元素为对象类型。对于基本类型数组,需要使用包装类。

核心代码

Java 5及之后版本

1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.Arrays;

public class ArrayPrinting {
public static void main(String[] args) {
// 一维数组
String[] array = new String[] {"John", "Mary", "Bob"};
System.out.println(Arrays.toString(array));

// 多维数组
String[][] deepArray = new String[][] {{"John", "Mary"}, {"Alice", "Bob"}};
System.out.println(Arrays.deepToString(deepArray));
}
}

Java 8及之后版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.Arrays;
import java.util.stream.IntStream;
import java.util.stream.Stream;
import java.util.stream.Collectors;

public class ArrayPrintingJava8 {
public static void main(String[] args) {
// 一维数组
int[] intArray = new int[] {1, 2, 3, 4, 5};
String[] strArray = new String[] {"John", "Mary", "Bob"};

// 使用Stream和lambda表达式
Arrays.stream(intArray).forEach(System.out::println);
Arrays.stream(strArray).forEach(System.out::println);

// 使用Stream.collect(joining())
System.out.println(IntStream.of(intArray).mapToObj(Integer::toString).collect(Collectors.joining(", ")));
System.out.println(Stream.of(strArray).collect(Collectors.joining(", ")));

// 多维数组
int[][] int2DArray = new int[][] { {11, 12}, { 21, 22}, {31, 32, 33} };
String[][] str2DArray = new String[][] { {"John", "Bravo"}, {"Mary", "Lee"}, {"Bob", "Johnson"} };

// 使用Stream和lambda表达式
Arrays.stream(int2DArray).flatMapToInt(x -> Arrays.stream(x)).forEach(System.out::println);
Arrays.stream(str2DArray).flatMap(x -> Arrays.stream(x)).forEach(System.out::println);
}
}

Java 1.4版本

1
2
3
4
5
6
7
8
9
import java.util.Arrays;

public class ArrayPrintingJava14 {
public static void main(String[] args) {
// 基本类型数组使用包装类
Integer[] a = new Integer[]{1, 2, 3, 4, 5};
System.out.println(Arrays.asList(a));
}
}

最佳实践

  • 对于简单的一维数组打印,优先使用Arrays.toString(arr)方法,代码简洁且易读。
  • 对于多维数组,使用Arrays.deepToString(arr)方法可以正确输出嵌套数组的内容。
  • 在Java 8及之后版本中,如果需要对数组元素进行处理或转换,可以使用Streamlambda表达式。

常见问题

  • 基本类型数组使用Arrays.asList()问题Arrays.asList()方法要求数组元素为对象类型,对于基本类型数组,需要使用包装类。但要注意,将基本类型数组转换为包装类数组会涉及自动装箱,可能会影响性能。
  • Arrays.deepToString(arr)输出格式问题Arrays.deepToString(arr)方法输出的内容在一行显示,如果需要格式化输出,可以使用replaceAll()方法进行处理。例如:
1
2
int[][] table = new int[2][2];
System.out.println(Arrays.deepToString(table).replaceAll("],", "],\n"));
  • Object.toString()方法重写问题:重写Object.toString()方法可以方便地打印数组,但这只是一个临时的调试技巧,不适合在生产环境中使用,因为可能会导致潜在的问题。

Java数组打印的最简方法
https://119291.xyz/posts/2025-05-15.java-array-printing-simplest-way/
作者
ww
发布于
2025年5月15日
许可协议