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