Почему емкость должна быть кратной или 2? Зачем использовать «&» в функции indexFor? Зачем перекомпилировать хеш в хэш-функции вместо прямого использования хеш-кода ключа?О реализации Java HashMap
Я думаю, что существуют некоторые важные различия между этой реализацией и описанием «Введение в алгоритм».
Что означает «>>>»?
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);
}
Может ли кто-нибудь дать мне руководство? Я ценю Если кто-то может объяснить хэш-алгоритм. Спасибо большое!
Я знаю, используя «&», ключ может быть отображен на ограниченный слот. Как насчет влияния на столкновение на карте хэша? – lingguang1997
'>>>' - беззнаковый сдвиг вправо. Регулярный '>>' в Java будет сохранять и распространять бит знака и оставлять отрицательное число отрицательным. '>>>' будет заполнять бит знака нулями, когда происходит сдвиг. –