如何将数组保存为字符串而不将所有数据混合到一行中?

问题描述

如果我有一个存储这些数据的数组

String stringArray[] = {
        "Apple a Day Keep You Away","Banana a Day Keep Her Away","Cat like Dog"};
StringBuffer sb = new StringBuffer();
for (int i = 0; i < stringArray.length; i++) {
    sb.append(stringArray[i]);
}
String str = sb.toString();
System.out.println(str);

我这样写是不是会变成Apple a Day Keep You AwayBanana a Day Keep Her AwayCat like Dog或者我需要添加\n这样的sb.append(stringArray[i] + "\n")才能得到我想要的东西。

Apple a Day Keep You Away
Banana a Day Keep Her Away
Cat like Dog

解决方法

除了使用 StringBuffer,您还可以使用 StringJoiner 为所有字符串附加一个分隔符。这也可以防止在上次结果后添加额外的新行

String stringArray[] = {"Apple a Day Keep You Away","Banana a Day Keep Her Away","Cat like Dog"};
StringJoiner joiner = new StringJoiner("\n");
for(int i = 0; i < stringArray.length; i++) {
    joiner.add(stringArray[i]);
}
String str = joiner.toString();
System.out.println(str);

您甚至可以使用流式 API 并使用换行符将结果附加到那里。

String stringArray[] = {"Apple a Day Keep You Away","Cat like Dog"};

String str = Arrays.stream(stringArray).collect(Collectors.joining("\n"));
System.out.println(str);
,

Java 8 开始,您可以使用 String.join 方法:

String stringArray[] = {
        "Apple a Day Keep You Away","Cat like Dog"};

String str = String.join("\n",stringArray);

System.out.println(str);

输出:

Apple a Day Keep You Away
Banana a Day Keep Her Away
Cat like Dog