如何在Java中将数组内容打印为字符串?

6

如何在Java中将Array内容转换为String

示例:

int[] myArray = {1,2,3};

输出必须是:
"123"

Arrays.toString(myArray) 返回的结果是:

"[1, 2, 3]"

myArray.toString()则返回:

[I@12a3a380

所以它们中没有一个起作用。有没有对应的函数?

这个问题看起来可能与(这个)类似,但实际上是不同的。我真正想要的是一个由所有数组条目组成的String


1
你不想将数组转换为字符串,而是想将元素转换为字符串,然后进行拼接。我认为遍历数组是实现这一点最简单的方法。 - Stultuske
1
IntStream.of(myArray).mapToObj(Integer::toString).collect(joining("")) - Andy Turner
@Zabuza,它不起作用...编译会失败...!! - miiiii
2
@AndyTurner IntStream.of(myArray) 内部只是调用了 Arrays.stream ... 我不认为这是关于如何 打印 数组内容的重复问题,对我来说这看起来并不像是一个重复的问题。 - Eugene
“有没有一个函数可以在不通过手动循环数组的情况下完成我正在尝试做的事情?” 不是的,因为提供一个如此“特定”的方法并没有太多意义。您可以使用String.join来处理String数组。 - AxelH
4个回答

13
String joined = Arrays.stream(myArray)
            .mapToObj(String::valueOf)
            .collect(Collectors.joining(""));

System.out.println(joined);   

7

传统的方法:

StringBuilder builder = new StringBuilder();
for (int value : myArray) {
  builder.append(value);
}
... now use builder.toString()

与流解决方案相比,这里的解决方案不那么花哨,但另一方面,如果运行时性能很重要,这里的解决方案应该能击败任何其他方法。


6
一种曲线救国的方法是从传统序列化方法的输出中删除任何非数字字符:
Arrays.toString(myArray).replaceAll("\\D", "");

在你的示例中,它产生了 123replaceAll 将第一个参数中正则表达式的所有正匹配替换为第二个参数的内容。 \D 是表示任何非数字的 regex

1
@Eugene:如果我在实际的代码中发现这个,我会大发脾气的。 :) - Henrik Aasted Sørensen
1
我一直以为只有 Perl 才知道 TIMTOWTDI(There Is More Than One Way To Do It)... 我也投了你的票。 - GhostCat

3

我将采用老派的方式,无论如何都可以成功,具体如下:

String myString = "";
for(int val : myArray)
{
  myString += val;
}

System.out.println(myString); // To check the output of myString

会起作用!希望这能帮到您!

注意:即使在嵌入式设备中剥离了StringBuilder和其他一些类,这也可以在嵌入式Java中正常工作。


1
通常情况下,应该优先考虑使用 StringBuilder 来实现在单个目标上进行多次追加的操作以获得更好的性能。请参见上面 GhostCat 的答案。 - Gaurang Tandon
我知道这个。@GaurangTandon - Somdip Dey
这种方法与Ghostcat提出的方法基本相同,只是为了内存效率而不使用StringBuilder - Henrik Aasted Sørensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接