我有一个方法,我输入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
运作缓慢吗?
答案 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)。
微观优化和破坏性阅读代码。