在java中,数组不重写 toString()
,因此,如果您尝试直接打印一个,您将获得 className
+“@”+字符的十六进制 hashCode
数组的,定义如下 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]
30条答案
按热度按时间q5lcpyga1#
如果使用commons.lang库,我们可以:
ArrayUtils.toString(array)
```int[] intArray = new int[] {1, 2, 3, 4, 5};
String[] strArray = new String[] {"John", "Mary", "Bob"};
ArrayUtils.toString(intArray);
ArrayUtils.toString(strArray);
{1,2,3,4,5}
{John,Mary,Bob}
wh6knrhe2#
在java 8中:
1qczuiv03#
这里有一个可能的打印功能:
例如,如果main是这样的
输出将为{[1][2][3][4]}
vlju58qv4#
在jdk1.8中,可以使用聚合操作和lambda表达式:
另外,从java 8开始,还可以利用string类提供的join()方法打印出数组元素,不带括号,并由所选的分隔符(以下示例中的空格字符)分隔
`输出将是“嗨,朋友!”
z8dt9xmd5#
如果您正在运行jdk 8。
输出:
jfewjypa6#
因为Java5可以使用
Arrays.toString(arr)
或Arrays.deepToString(arr)
对于数组中的数组。请注意Object[]
版本调用.toString()
在数组中的每个对象上。输出甚至按照您要求的方式进行装饰。示例:
简单数组:
输出:
嵌套数组:
输出:
双阵列:
输出:
整数数组:
输出:
bvuwiixz7#
始终首先检查标准库。
然后尝试:
或者,如果您的数组包含其他数组作为元素:
uurv41yg8#
然而,知道这一点很好,至于“总是先检查标准库”,我从来没有偶然发现
Arrays.toString( myarray )
--因为我专注于myarray的类型,想看看如何做到这一点。我不想重复这件事:我想要一个简单的调用,使它与我在eclipse调试器和myarray中看到的类似。tostring()只是没有这样做。ws51t4hk9#
在jdk1.8中,可以使用聚合操作和lambda表达式:
to94eoyn10#
从Java8开始,还可以利用
join()
string类提供的用于打印数组元素的方法,该方法不带括号,并由所选分隔符(以下示例中的空格字符)分隔:输出将是“嗨,朋友!”。
bhmjp9jg11#
Java8之前的版本
我们本可以用
Arrays.toString(array)
打印一维数组和Arrays.deepToString(array)
对于多维数组。java 8
现在我们可以选择
Stream
及lambda
打印数组。打印一维数组:
输出为:
[1, 2, 3, 4, 5]
[约翰、玛丽、鲍勃]
1.
2.
3.
4.
5.
厕所
玛丽
上下快速移动
打印多维数组以防我们想要打印我们可以使用的多维数组
Arrays.deepToString(array)
作为:现在要观察的是,方法
Arrays.stream(T[])
,以防int[]
返回我们Stream<int[]>
然后是方法flatMapToInt()
将流的每个元素与通过将提供的Map函数应用于每个元素而生成的Map流的内容进行Map。输出为:
[[11, 12], [21, 22], [31, 32, 33]]
[约翰,好极了],[玛丽,李],[鲍勃,Json]]
11
12
21
22
31
32
33
厕所
好极了
玛丽
李
上下快速移动
Json
6ljaweal12#
如果您使用的是java 1.4,则可以执行以下操作:
(当然,这也适用于1.5+版本。)
1aaf6o9v13#
数组.tostring
作为一个直接的回答,包括@esko在内的几个公司提供的解决方案使用
Arrays.toString
及Arrays.deepToString
方法,就是最好的。Java8-stream.collect(joining()),stream.foreach
下面我试着列出一些建议的其他方法,试图做一些改进,最值得注意的是使用
Stream.collect
运算符,使用joining
Collector
,以模仿String.join
他正在做什么。6vl6ewon14#
Arrays.deepToString(arr)
只在一行上打印。要将表格打印为二维表格,我必须执行以下操作:
看起来像是
Arrays.deepToString(arr)
方法应该使用分隔符字符串,但不幸的是它没有。jum4pzuy15#