java - 在 Java 中迭代字符串时,哪种方法更快,为什么?

标签 java string

我正在浏览 this questionanswers 之一给了 2 个选项,并说第一个可能更快。

我想知道为什么?

答案中提到的2个选项是

for(int i = 0, n = s.length() ; i < n ; i++) { 
    char c = s.charAt(i); 
}

for(char c : s.toCharArray()) {
    // process c
}

最佳答案

建议的第二个答案创建一个 char 数组并对其进行迭代。由于在迭代之前创建数组的额外开销,这种机制可能更慢;此开销与字符串的长度相关。

您引用的答案中未提及的第三种方法涉及使用 StringCharacterIterator;例如

CharacterIterator it = new StringCharacterIterator("Hello, World");
char c;

while ((c = it.next()) != CharacterIterator.DONE) {
  System.err.println("Char: " + c);
}

但是,我个人的偏好是在您引用的答案中使用第一个基于索引的解决方案。

关于java - 在 Java 中迭代字符串时,哪种方法更快,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7767085/

相关文章:

java - 如何通过上下文菜单从 SQLite 数据库中删除项目?

Java,从 ArrayList 中删除对象重写为文本文件

java - 如何从 Open Office 电子表格中获取值?

java - 如何检查字符串是否等于先前定义的字符串数组中的任何元素

c - C语言中的字符串会发生什么变化?

JavaFX - 并发和更新标签

java - 持久化新元素时违反唯一索引或主键

c++ - 为什么我从这个字符串到 char 转换得到随机输出?

wpf - 如何在 WPF 中执行 Graphics.DrawString() 的等效操作?

python - 如何获取字符串中另一个字符周围的一些字符?