【发布时间】:2012-07-06 08:21:30
【问题描述】:
我需要将整数元组(顺序很重要)散列成碰撞概率低的整数。我正在使用将整数转换为字符串,与','连接并获取字符串哈希的方法,但它太慢了。
有没有办法从整数元组中获得快速哈希?
【问题讨论】:
-
值的范围是多少?多少个值?
标签: hash
我需要将整数元组(顺序很重要)散列成碰撞概率低的整数。我正在使用将整数转换为字符串,与','连接并获取字符串哈希的方法,但它太慢了。
有没有办法从整数元组中获得快速哈希?
【问题讨论】:
标签: hash
这是 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 界面中指定。我不知道它对你来说是否足够耐碰撞,但这似乎是一个不错的起点。它确实考虑了顺序(即相同数字的不同顺序将产生不同的哈希值)。
【讨论】: