有人可以解释这些常数的重要性以及选择它们的原因吗?
static int hash(int h) {
// This function ensures that hashCodes that differ only by
// constant multiples at each bit position have a bounded
// number of collisions (approximately 8 at default load factor).
h ^= (h >>> 20) ^ (h >>> 12);
return h ^ (h >>> 7) ^ (h >>> 4);
}
Run Code Online (Sandbox Code Playgroud)
来源:java-se6库
我也对这样的“神奇”数字感到好奇。据我所知,它们是神奇的数字。
通过广泛的测试证明,奇数和素数具有可用于散列的有趣优先级(避免主/辅助聚类等)。
我相信大多数数字都是经过研究和测试得出的,这些研究和测试在统计上证明可以提供良好的分布。为什么具体这些数字会这样做,我不知道,但我有这样的印象(希望这里的同事可以纠正我,如果我离题太远),实施者也不知道为什么这些具体数字呈现出这些品质