如果我有一个 StringBuilder 对象 sb,当我尝试使用代码 new String(sb) 创建一个新字符串时,时间复杂度是多少?请参阅下面的示例。它应该是 O(n) 因为它创建了一个带有原始 sb 的深拷贝的字符串吗?谢谢。
StringBuilder sb = new StringBuilder();
sb.append('a');
sb.append('b');
String c = new String(sb);
最佳答案
是的。在)。这就是为什么它在图书馆里。 C# 也是如此。
两种语言中的字符串都是不可变的。因此,使用连续的字符串连接构建报告和其他文本文档的时间复杂度为 O(n 平方)。
两种语言的 StringBuilder 类的开发人员投入了大量的脑力和测试时间来使其变得非常快。当然,其他核心集合类也是如此。
如果您可以使用 StringBuilder 代码重构一些连续的串联代码,您将被尊为性能优化向导。
当心 StringBuffer。它具有类似的语义,但它恰好是线程安全的,这大大减慢了速度。
关于java - 在Java中使用stringbuilder对象创建字符串的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74133267/