指定精确的StringBuilder容量还是使用默认值?

时间:2015-09-30 09:14:02

标签: java string performance stringbuilder capacity

我有一个方法,我输入URL作为字符串,我必须从中删除后缀并添加另一个。出于这个原因,我使用StringBuilder,但我想知道我是否必须指定 Builder 的确切容量或依赖默认值 16 在我的所有情况下都不够,所以容量会在代码中扩展。?

我的代码是这样的:

private String constructString(final String url, final String suffixToRemove, final String suffixToAdd) {
        StringBuilder result = new StringBuilder(url.length() - suffixToRemove.length() + suffixToAdd.length());
        .....
    }

我想确定是否更快地放置Builder的默认容量或通过获取三个字符串的.length来构建精确的容量。 String.length运作缓慢吗?

2 个答案:

答案 0 :(得分:0)

你可以这样做:

final int len = url.length() - suffixToRemove.length();
final StringBuilder sb = new StringBuilder(url);
sb.setLength(len);
return sb.append(suffixToAdd).toString();

答案 1 :(得分:0)

仅限大型文本,避免重复增加。对于小字符串,它可以使用足够小的尺寸,并且很少需要增加。但是评估一个整数表达式,其中有几个rspec肯定会超过目标,甚至可能比80更慢(我相信默认为16)。

微观优化和破坏性阅读代码。