StringBuilder insert() vs append() 性能?

StringBuilder insert() vs append() performance?

StringBuilder class 的 insert() 与 append() 的性能有何不同?我将构建大量短字符串作为文本标识符并问自己这个问题...我应该使用分隔符初始化 SB 并使用插入 + 附加还是仅附加?

它们具有不同的功能和不同的复杂性,

insert:

  1. (确保备份数组的容量,必要时需要复制旧的)
  2. 将项目前导的元素推入插入索引(偏移量)

其中 append:

  1. (确保备份数组的容量,必要时需要复制旧的)
  2. 将新元素添加到数组的尾部

所以如果你想总是添加到尾部,那么性能将是相同的,因为 insert 不会压入任何元素。

所以,我会使用 append,它更干净。

根据 Java API 文档。如果使用插入,则必须提供偏移量。

StringBuilder.insert(5, "String");

StringBuilder.append("string") 没有。我假设追加的性能比插入的好。

知道:

  • 字符串表示末尾的 insert 在时间复杂度 (O(n)) 方面等同于 append
  • 一个 insert 除了最后 之外的任何地方都不能 append 获得(因为它们有不同的目的)。
  • 有关信息,insert 最多可能涉及 3 个 System.arraycopy(本机)调用,而 append 1.

你可以很容易地得出结论:

  • 如果要在字符串表示的末尾插入,使用append
  • 否则,使用insert

这样做,你会得到最好的表现。但是同样,这两种方法服务于两个不同的目的(除了最后插入),这里没有真正的问题。