我有一个在内部只是整数数组的类。一旦构造好,阵列就永远不会改变。我想预先计算一个好的哈希码,以便可以将该类非常有效地用作Dictionary中的键。数组的长度小于约30个项目,并且整数通常在-1000和1000之间。

最佳答案

不是很聪明,但足以满足大多数实际目的:

编辑:更改由于Henk Holterman的评论,对此表示感谢。

int hc=array.Length;
for(int i=0;i<array.Length;++i)
{
     hc=unchecked(hc*314159 +array[i]);
}
return hc;

如果您需要更复杂的东西,请look here

09-25 19:29