【问题标题】:Fast way to hash a tuple of integers散列整数元组的快速方法
【发布时间】:2012-07-06 08:21:30
【问题描述】:

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

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

【问题讨论】:

  • 值的范围是多少?多少个值?

标签: hash


【解决方案1】:

这是 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 界面中指定。我不知道它对你来说是否足够耐碰撞,但这似乎是一个不错的起点。它确实考虑了顺序(即相同数字的不同顺序将产生不同的哈希值)。

【讨论】:

    猜你喜欢
    • 2017-04-13
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    相关资源
    最近更新 更多