Преобразование хэша в индекс (почему так?) в Java HashMap
Почему в Java HashMap используется такой метод индексирования по массиву значений:
(length - 1) & hash
Ведь для такого метода подходят только массивы длинны 2^x, что не совсем удобно, ведь при увеличении размера массива для, допустим, 100 элементов, он увеличиться сразу в 2 раза (если до этого был размером 2^x, то потом 2^(x+1))
Почему бы не использовать Math.abs(hash % length), ведь он равномерно покрывает все длины массива? Какие минусы есть у такого способа, кроме чуть меньшей производительности?