【问题标题】:String vs Char Array vs String Builder (efficiency performance)String vs Char Array vs String Builder(效率性能)
【发布时间】:2016-05-05 14:01:16
【问题描述】:

我正在编写一个向用户提供建议的拼写校正器。为此,我使用单词 1 和 2 编辑距离。有四种技术:

  • 删除单词的一个字母,
  • 转置两个相邻的字母,
  • 改变单词的一个字母,并且
  • 在单词中插入一个字母。

其中一些需要对单词进行多次迭代,并执行诸如交换两个字母或在字符串中间添加一个字母之类的操作。

我知道 String 在 java 中是不可变的,并且从字符串生成器插入可能会根据需要创建字符串的副本,所以我想知道一个 char 数组是否会使这更快。

【问题讨论】:

  • @AndyTurner 这似乎是一个很好的答案:)
  • 还值得一提的是,Java 编译器足够聪明,可以用 StringBuilder 替换字符串操作(如 + 运算符),通常不需要此类决定。另见stackoverflow.com/questions/1532461/…

标签: java arrays string stringbuilder


【解决方案1】:

很难说 - 没有更多上下文 - 各种方法中哪种方法最快。 (或者即使速度差异是相关的;或者速度是最重要的指标)。

您需要针对您的情况对各种方法进行基准测试。


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

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

【讨论】:

    猜你喜欢
    • 2015-06-07
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    相关资源
    最近更新 更多