java将单词映射为单个字符
我正在构建一个散列函数,它应该将任何字符串(最大长度为100个字符)映射到单个[a-Z]字符(我使用它进行切分)
我提出了这个简单的Java函数,有没有办法让它更快
public static final char stringToChar(final String s) {
long counter = 0;
for (char c : s.toCharArray()) {
counter += c;
}
return (char)('A'+(counter%26));
}
# 1 楼答案
实现“碎片”均匀分布的一个快速技巧是使用哈希函数
我建议这个方法使用默认的java
String.hashCode()
函数正如所指出的那样,这种方法被认为“甚至足够”
根据快速测试,它看起来比您建议的解决方案更快
在不同长度的80kk弦上:
getShardLabel
花费了65毫秒stringToChar
耗时571毫秒