来自 MIT recitation的良好散列函数的属性:
- (大约)满足简单统一散列的假设:每个键都有可能散列到 m 个槽中的任何一个。
- 散列函数不应该偏向于特定的槽不会将相似的键散列到同一个槽(例如编译器的符号表不应该将变量 i 和 j 散列到同一个槽,因为它们经常结合使用)
- 计算速度很快,应该有 O(1) 运行时间
- 是确定性的。对于给定的 k,h(k) 应该始终返回相同的值
有人可以进一步解释第 2 点。变量名与散列函数有什么关系?
编辑:我使用 Java。因此,如果答案包含使用 java 语义的解释,那对我来说没问题。