string.replaceAll()性能是否受到字符串不变性的影响?

时间:2009-08-09 00:07:15

标签: java performance string

假设我在一个替换1,000个匹配实例的大字符串上调用了replaceAll()。这是否意味着由于字符串不变性而创建并重新分配了1,000个字符串?还有更快的替代方案吗?

2 个答案:

答案 0 :(得分:13)

如果你深入研究String,你会发现它将replaceAll()委托给Pattern& Matcher Matcher.replaceAll()使用StringBuilder存储最终返回的值。

所以不,String.replaceAll()不会创建多个对象。

答案 1 :(得分:-1)

您可以尝试使用StringBuffer / StringBuilder,因为它们可变 CharSequence s:

CharSequence veryBigString = new StringBuilder();
Pattern.compile(regex).matcher(veryBigString).replaceAll(replacement);
相关问题