Представьте модуль оператора %
как способ равномерно распределить набор чисел через , уменьшив их в меньшем диапазоне. Набор чисел, конечно же, хеш-коды клавиш ввода. Небольшой диапазон - вместимость стола.
Это полезный метод, когда вы хотите назначить индекс в маленькой таблице для хранения большого числа.
Обратная операция звучит довольно странно (и бесполезно): принимая во внимание, что хэш-коды являются большими числами, а n - маленьким, n % hash
будет всегда возвращать n
, так что он вообще не интересен.
Java выбирает индексы через hash & (length-1)
, что на самом деле не является арифметически эквивалентным hash % length
, но это альтернатива - и дешевле, чем формула - формула для сокращения и распределения (кредиты @Zabuza).