在 Java 中将字符串数组转换为字符串

2022-08-31 05:10:00

我想要将字符串数组转换为字符串的Java代码。


答案 1

Java 8+

用:String.join()

String str = String.join(",", arr);

请注意,也可以是任何(如列表),而不仅仅是数组。arrIterable

如果有 ,则可以使用连接收集器:Stream

Stream.of("a", "b", "c")
      .collect(Collectors.joining(","))

旧版(Java 7 及更早版本)

StringBuilder builder = new StringBuilder();
for(String s : arr) {
    builder.append(s);
}
String str = builder.toString();

或者,如果您只需要数组的“调试样式”转储:

String str = Arrays.toString(arr);

请注意,如果您确实是旧版(Java 1.4及更早版本),则需要将其替换为 .StringBuilderStringBuffer

人造人

用:TextUtils.join()

String str = TextUtils.join(",", arr);

一般说明

您可以修改上述所有示例,具体取决于字符串之间所需的字符(如果有)。

不要使用字符串,只需在循环中用+=附加到它,就像这里的一些答案所示。这会通过屋顶发送 GC,因为您正在创建并丢弃数组中有多少个项目的字符串对象。对于小型数组,您可能并没有真正注意到差异,但对于大型数组,它可能会慢几个数量级。


答案 2

使用Apache commons StringUtils.join()。它采用数组作为参数(并且还具有 和 参数的重载),并调用每个元素(如果它不是 null)以获取每个元素的字符串表示形式。然后,如果指定了字符串表示形式,则将每个元素的字符串表示形式联接到一个字符串中,中间有一个分隔符:IterableIteratortoString()

String joinedString = StringUtils.join(new Object[]{"a", "b", 1}, "-");
System.out.println(joinedString);

生产:

a-b-1