我有这个,我想让它更有效率,如果你需要我创建的整个hashset数据结构我可以添加它但我总体上寻找像这样的东西,它需要任意数量的字符串并存储在我的自定义实现的hashset:
private int hash(String key)
{
int prime = 31;
int hash = 0;
for(int i = 0; i < key.length(); i++)
{
hash *= prime;
hash ^= key.charAt(i);
}
if (hash < 0)
hash *= -1;
return hash % array.length;
}
答案 0 :(得分:0)
一些观察结果:
以下代码效率低下:
if (hash < 0)
hash *= -1;
这段代码更好,因为(1)它不使用处理器乘法指令,这是资源密集型的,(2)它不会定期产生分支错误预测:
hash &= ~0x80000000;