gpt4 book ai didi

java - 使用循环最佳实践创建 StringBuilder

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:05:13 25 4
gpt4 key购买 nike

我想知道这段使用 StringBuilder 的代码是否最有效

或者它仍然通过将“”与当前项连接来创建大量临时字符串?

如果可以,您能建议更好的代码吗?

public String toString() {
StringBuilder out = new StringBuilder();
for (long item : someListOfNumbers) {
out.append( " " + item);
}
return out.toString();
}

最佳答案

对于这个特定的用例,您可能想要使用 StringJoiner , 除非您的目标是在结果中有前导空格。

public String toString() {
StringJoiner joiner = new StringJoiner(" ");
someListOfNumbers.forEach(l -> joiner.add(Long.toString(l)));
return joiner.toString();
}

或使用 Collectors.joining() :

public String toString() {
returns someListOfNumbers.stream()
.map(String::valueOf)
.collect(Collectors.joining(" "));
}

StringBuilder 在构建文本时会更有效率,但可以说上面的代码更具可读性。在使用 StringBuilder 时,绝对应该避免使用 + 运算符,而是使用 append() 之类的方法。

如果你看一下thisthis或其他答案,您会看到 javac 编译器对字符串连接进行了额外优化,例如如果常量与 + 运算符连接,则编译器可以将生成的常量插入字节码。

关于java - 使用循环最佳实践创建 StringBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56424159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com