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


当前回答

Java 8 +

使用String.join ():

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

注意,arr也可以是任何Iterable(比如一个列表),而不仅仅是一个数组。

如果你有一个流,你可以使用连接收集器:

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或更早的版本),你需要用StringBuffer替换那里的StringBuilder。

安卓

使用TextUtils.join ():

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

一般的笔记

您可以根据字符串之间的字符(如果有的话)来修改上面的所有示例。

不要像这里显示的一些答案那样使用字符串并在循环中添加+=。这将使GC飙升,因为创建和丢弃的字符串对象与数组中的项目一样多。对于小型数组,您可能不会真正注意到差异,但对于大型数组,它可能会慢几个数量级。

其他回答

你需要从数组列表中生成字符串的代码,

Iterate through all elements in list and add it to your String result

你可以用两种方式:使用String作为结果或使用StringBuffer/StringBuilder。

例子:

String result = "";
for (String s : list) {
    result += s;
}

...但由于性能原因,这不是一个好的实践。更好的方法是使用StringBuffer(线程安全)或StringBuilder,它们更适合添加字符串

我喜欢使用谷歌的番石榴Joiner,例如:

Joiner.on(", ").skipNulls().join("Harry", null, "Ron", "Hermione");

将产生与以下相同的String:

new String("Harry, Ron, Hermione");

ETA: Java 8现在也有类似的支持:

String.join(", ", "Harry", "Ron", "Hermione");

不能看到跳过空值的支持,但这很容易解决。

Java 8 +

使用String.join ():

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

注意,arr也可以是任何Iterable(比如一个列表),而不仅仅是一个数组。

如果你有一个流,你可以使用连接收集器:

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或更早的版本),你需要用StringBuffer替换那里的StringBuilder。

安卓

使用TextUtils.join ():

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

一般的笔记

您可以根据字符串之间的字符(如果有的话)来修改上面的所有示例。

不要像这里显示的一些答案那样使用字符串并在循环中添加+=。这将使GC飙升,因为创建和丢弃的字符串对象与数组中的项目一样多。对于小型数组,您可能不会真正注意到差异,但对于大型数组,它可能会慢几个数量级。

public class ArrayToString
{   
    public static void main(String[] args)
    {
        String[] strArray = new String[]{"Java", "PHP", ".NET", "PERL", "C", "COBOL"};
        
        String newString = Arrays.toString(strArray);
        
        newString = newString.substring(1, newString.length()-1);

        System.out.println("New New String: " + newString);
    }
}

使用Apache Commons的StringUtils库的join方法。

String[] stringArray = {"a","b","c"};
StringUtils.join(stringArray, ",");