我需要将整数元组(顺序很重要)散列为具有低碰撞概率的整数。我正在使用将整数转换为字符串的方法,与','连接并获取字符串哈希,但它太慢了。
有没有办法从整数元组中获取快速哈希值?
答案 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界面中指定。我不知道它是否足够防碰撞,但它似乎是一个好的起点。它确实需要考虑顺序(即相同数字的不同顺序将产生不同的散列值)。