固定数组?/ StringBuilder?/ String?如果要追加84个字符串,这是创建字符串的最佳方法

tyr*_*yro -2 java arrays string stringbuilder

我事先知道,将有84个字符串将被逗号分隔符追加,然后创建一个字符串,

哪种方式更好的是固定数组,字符串或字符串生成器?

T.J*_*der 6

如果通过"最佳"表示"大多数内存和/或运行时效率",那么您可能最好使用StringBuilder预分配.(看过String.joinJDK 中的实现StringJoiner,它使用了一个StringBuilder默认的初始容量[16个字符],而没有尝试避免重新分配和复制.)

你总结了84个字符串的长度,加上逗号的数量,StringBuilder用这个长度创建一个,将它们全部添加,并调用toString它.例如:

int length = 0;
for (int i = 0; i < strings.length; ++i) {
    length += strings[i].length();
}
length += strings.length - 1; // For the commas
StringBuilder sb = new StringBuilder(length);
sb.append(strings[0]);
for (int i = 1; i < strings.length; ++i) {
    sb.append(',');
    sb.append(strings[i]);
}
String result = sb.toString();
Run Code Online (Sandbox Code Playgroud)