【问题标题】:Reading one character at a time from a large string从大字符串中一次读取一个字符
【发布时间】:2012-04-08 17:32:19
【问题描述】:

我有一个最多包含 100000 个字符的大字符串。我没有使用string.charAt[index] 从字符串中读取字符,而是使用string.toCharArray() 方法将该字符串转换为char 数组,现在我正在使用charArray[index]。这比string.charAt[index] 方法花费的时间更少。不过我想知道,有没有比string.toCharArray(); 方法更快的方法?

【问题讨论】:

  • 您如何确定string.charAt(index) 较慢?我不认为它会更慢。
  • 为了您的方便,也许我可以建议使用StringReader
  • 我注意到System.getTimeinMills()string.charAt(index) 也使用数组索引。最好有一个数组。
  • @Ravi Joshi: "使用 string.charAt[index] 从字符串中读取一个字符"...字符串的 charAt 确实 not 从字符串中读取一个字符。它读取一个 Java char,它完全不足以容纳所有的 Unicode 字符。从 Java 1.4 开始,一个字符可能需要多个 Java char 才能使用 char 来表示。例如,像 Stackoverflow 这样的网站完全支持 Unicode 和所有 Unicode 代码点。 Java 的 char 原语没有。
  • @TacticalCoder:感谢您提供此信息。我不知道这个事实。但是在我的情况下,字符串仅由小写字母组成,即 a-z。

标签: java arrays string


【解决方案1】:

我认为没有更快的方法。但请纠正我!

String 实例由 char 数组支持。 charAt() 会进行一些索引检查,这可能是它比使用 toCharArray() 返回的数组慢的原因。 toCharArray() 只是对后备数组执行 System.arraycopy()。

【讨论】:

  • 在使用string.charAt[index]时,是否每次都会创建char[string.length()]?如果是,那可能是它的性能较差的原因。
猜你喜欢
  • 2013-06-27
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 2014-04-14
  • 2011-02-07
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多