散列整数元组的快速方法

时间:2012-07-06 08:21:31

标签: hash

我需要将整数元组(顺序很重要)散列为具有低碰撞概率的整数。我正在使用将整数转换为字符串的方法,与','连接并获取字符串哈希,但它太慢了。

有没有办法从整数元组中获取快速哈希值?

1 个答案:

答案 0 :(得分:3)

以下是Java的Arrays.hashCode(int[])所做的事情:

 2938       public static int hashCode(int a[]) {
 2939           if (a == null)
 2940               return 0;
 2941   
 2942           int result = 1;
 2943           for (int element : a)
 2944               result = 31 * result + element;
 2945   
 2946           return result;
 2947       }

此计算在List界面中指定。我不知道它是否足够防碰撞,但它似乎是一个好的起点。它确实需要考虑顺序(即相同数字的不同顺序将产生不同的散列值)。