不确定,但我认为我可以使用更少的内存,并通过逐字符执行它来获得可靠的性能。我正在做类似的事情,但在后台线程的循环,所以我现在正在尝试这一点。我有一些经验,与字符串。分裂比预期的更昂贵。我正在研究 Android 系统,希望 GC 的问题比 CPU 的问题更严重。
public static String toCamelCase(String value) {
StringBuilder sb = new StringBuilder();
final char delimChar = '_';
boolean lower = false;
for (int charInd = 0; charInd < value.length(); ++charInd) {
final char valueChar = value.charAt(charInd);
if (valueChar == delimChar) {
lower = false;
} else if (lower) {
sb.append(Character.toLowerCase(valueChar));
} else {
sb.append(Character.toUpperCase(valueChar));
lower = true;
}
}
return sb.toString();
}
分裂的代价很高的一个提示是,它的输入是正则表达式(而不是像 String.indexOf 那样的字符) ,并且它返回一个数组(而不是迭代器,因为循环一次只使用一个元素)。另外,像“ AB _ AB _ AB _ AB _ AB _ AB...”这样的情况会打破任何批量复制的效率,对于长字符串,数量级比输入字符串使用更多的内存。