【发布时间】:2014-02-27 18:27:03
【问题描述】:
我的问题是我有一个大字符串,我想将所有“i”更改为“I”。但是我不能足够有效地做到这一点。我知道以前有人问过关于替换部分字符串的问题,但我不确定最快的方法是什么。
我尝试过的一些:
一)
if (question.charAt(i)=='i' && question.charAt(i+1)==' ')
{
question = question.substring(0,i) + 'I' + question.substring(i+1);
}
b)(比尝试 a 慢 100-200 倍)
question = question.replace("i ", "I ");
c)(比尝试 a 慢大约 100 倍)
question = question.replaceAll("i ", "I ");
我从来没有做过高效的编程,而且这些都没有降低我需要的效率。有没有我不知道的更快的方法?
【问题讨论】:
-
一般来说,对于一个中等长度的字符串,使用任何机制的扫描成本都会被分解和重组 String 对象。
-
请注意,您上面的示例是将苹果与橙子进行比较,因为第一种情况不会扫描以查找要替换的位置。
-
我希望您在像这样进行微基准测试时注意预热 JVM 并获取大量运行的平均值。众所周知,微基准测试很难正确。
标签: java string search performance