java - 在Java中使用stringbuilder对象创建字符串的时间复杂度

标签 java stringbuilder

如果我有一个 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/

相关文章:

java - 如何使用硬编码值声明自定义数据类型的静态数组?

java - Maven插件中的依赖注入(inject)

java - 集合和 StringBuilder 的奇怪行为

java - 使用 Visual Studio 在 Windows 上编译 java.exe?

java - 如何编写 ANTLR 语法来解析纯文本文件

java - 在任意位置编辑的基于文本的文件的高效设计?

java - JLabel 设置为文本列表项

java - 为什么在 1.5 之前的 java 版本中用 StringBuilder 替换 StringBuffer 对象是不安全的

java - 从 .jar 文件运行服务器程序

java - Java中使用LinkedHashMap替换StringBuilder中的字符