StringBuilder insert()vs append()性能?

时间:2015-11-27 11:15:07

标签: java stringbuilder

StringBuilder类中insert()vs append()的性能有什么不同?我将构建大量的短字符串作为文本标识符并问自己这个问题...我应该用分隔符初始化SB并使用insert + append或者只是追加?

3 个答案:

答案 0 :(得分:6)

知道:

  • 字符串表示结尾处的insert相当于append的时间复杂度(O(n))。
  • 使用insert(因为它们有不同的目的)可以获得<{1}}以外的任何地方无法
  • 有关信息,append最多可能涉及3个insert(本机)来电,而System.arraycopy则为1。

您可以轻松得出结论:

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

这样做,您将获得最佳性能。但同样,这两种方法服务于两个不同的目的(除了最后插入),这里没有真正的问题。

答案 1 :(得分:1)

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

插入:

  1. (确保后备阵列的容量,如有必要,需要复制旧的容量)
  2. 按插入索引(偏移量)推送项目的元素
  3. 追加:

    1. (确保后备阵列的容量,如有必要,需要复制旧的容量)
    2. 将新元素添加到数组的尾部
    3. 因此,如果您想要始终添加到尾部,那么性能将是相同的,因为insert不会推送任何元素。

      所以,我会使用追加,它只是更清洁。

答案 2 :(得分:-4)

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

StringBuilder.insert(5, "String");

StringBuilder.append("string")没有。我认为append具有比insert更好的性能。