您能帮我找到一种最佳的方法来计算具有3个int params (例如a、b、c)的类的hashcode,并且每个param的值可能在预定义的范围内?我的意思是,a应该在某种范围内,从a1到a2,b相应地从b1到b2,还有c,你可能会猜到从c1到c2。所有这些a1,a2,b1..。都是常量,并且在哈希代码生成时已知。我希望避免碰撞。
发布于 2018-06-10 13:42:51
首先,确保总数量的变体-产品(a2 - a1) * (b2 - b1) * (c2 - c1)适合您的哈希代码容量。如果要使用32位无符号int,则该值应该小于2^32。
通过选择一些初始值s开始构造哈希码(您可以选择零,从而有效地省略初始值)。然后,对每个param执行以下操作:
a2 - a1)对于三个参数的情况,公式是
((s*(a2 - a1) + (a - a1))*(b2 - b1) + (b - b1))*(c2 - c1) + (c - c1)
其中s是可选的起始值。
编辑
应将Param增值调整到其范围。
https://stackoverflow.com/questions/50784164
复制相似问题