字符串 vs 字符数组 vs 字符串生成器(效率性能)

7
我正在编写一个拼写纠正器,为用户提供建议。为此,我使用了距离单词一或两个编辑距离的单词。这里有四种技术:
  • 删除单词中的一个字母,
  • 交换两个相邻字母,
  • 更改单词中的一个字母,以及
  • 在单词中插入一个字母。
其中一些需要多次迭代单词,并执行像交换两个字母或在字符串中间添加一个字母之类的操作。
我知道Java中的字符串是不可变的,而且从字符串构建器中插入可能会根据需要创建字符串的副本,所以我想知道字符数组是否会使这个过程更快。

@AndyTurner 看起来是一个不错的答案 :) - Filipe Borges
值得一提的是,Java编译器足够智能,可以用StringBuilder替换字符串操作(如+运算符),这通常使这些决策变得不必要。请参见https://dev59.com/JnI_5IYBdhLWcg3wFu_L。 - Sharon Ben Asher
1个回答

11

在没有更多上下文的情况下,很难说哪种方法是最快的(甚至不确定速度差异是否相关或速度是否是最重要的指标)。

您需要为您的情况基准测试各种方法。


StringBuilder只是一个char[]的包装器,添加了一些功能,例如根据需要调整数组大小以及在插入/删除元素时移动元素等。

对于某些事情来说,直接使用char[]可能会稍微快一些,但您将失去(或必须重新实现)许多有用的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接