打印Java数组的最简单方法是什么?
在Java中,数组不重写toString()
,因此如果您尝试直接打印一个数组,则会得到className
+'@'+数组^{Object.toString()
所定义:
int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray); // prints something like '[I@3343c8b3'
但通常情况下,我们实际上想要更像[1, 2, 3, 4, 5]
的东西。最简单的方法是什么?以下是一些输入和输出示例:
// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]
// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]
# 1 楼答案
在JDK1中。8您可以使用聚合操作和lambda表达式:
# 2 楼答案
从Java 8开始,还可以利用String class提供的
join()
方法打印出数组元素,不带括号,并由所选分隔符分隔(这是下面所示示例的空格字符):输出将是“嗨,朋友!”
# 3 楼答案
然而,知道这一点很好,至于“总是先检查标准库”,我永远不会偶然发现
Arrays.toString( myarray )
的诀窍--因为我一直在关注myarray的类型,以了解如何做到这一点。我不想重复这件事:我想要一个简单的调用,使它与我在Eclipse调试器和myarray中看到的类似。toString()只是没有这么做
# 4 楼答案
Java8之前的版本
我们可以使用
Arrays.toString(array)
打印一维数组,而Arrays.deepToString(array)
打印多维数组爪哇8
现在我们有了
Stream
和lambda
选项来打印数组打印一维数组:
输出为:
打印多维数组 为了防止我们想要打印多维数组,我们可以使用
Arrays.deepToString(array)
作为:现在要观察的是方法
Arrays.stream(T[])
,在int[]
的情况下,它返回我们Stream<int[]>
,然后方法flatMapToInt()
将流的每个元素与通过将提供的映射函数应用于每个元素而生成的映射流的内容进行映射输出为:
# 5 楼答案
由于Java5,您可以对数组中的数组使用^{} 或^{} 。注意
Object[]
版本对数组中的每个对象调用.toString()
。输出甚至按照您要求的方式进行装饰示例:
简单数组:
输出:
嵌套数组:
输出:
double
数组:输出:
int
数组:输出:
# 6 楼答案
始终首先检查标准库
然后尝试:
或者,如果您的数组包含其他数组作为元素: