在Java字符串中替换方法的更快替代方案?

2022-09-03 09:05:20

replace 方法返回字符串对象而不是替换给定字符串的内容这一事实有点迟钝(但是当您知道字符串在 Java 中是不可变的时,这是可以理解的)。我在某些代码中使用深度嵌套的替换对性能造成了重大影响。有没有我可以用什么来代替它,使它更快?


答案 1

这就是StringBuilder的用途。如果你要做很多操作,那就在 a 上做,然后在需要时把它变成 a。StringBuilderString

StringBuilder描述如下:

“可变的字符序列。此类提供了与 StringBuffer 兼容的 API,但不保证同步”。

它具有(and , , , et al),您可以使用将其变形为实数。replaceappendinsertdeletetoStringString


答案 2

之前的帖子是正确的,StringBuilder/StringBuffer是一个解决方案。

但是,您还必须质疑对内存中的大字符串进行替换是否是一个好主意。

我经常有作为流实现的字符串操作,因此,我不会在字符串中替换它,然后将其发送到 OutputStream,而是在将 String 发送到输出流时进行替换。这比任何替代品都快得多。

如果您希望此替换实现模板机制,则此方法的运行速度要快得多。流总是更快,因为您消耗的内存更少,如果客户端速度较慢,则只需以较慢的速度生成 - 因此它可以更好地扩展。