Т.е. hash это просто дополнительный метод (хеш-функция), который проводит какие-то преобразования с тем, что получилось в hashCode()?
А зачем в самом Node существует метод hashCode()? На что он влияет?
И где определяется индекс нужной ячейки?
i = (n - 1) & hash
static final int hash(Object key)
. Как вы уже увидели, он обращается к методу hashCode
ключа. Для Object
это нативный метод, то есть реализованный на C в коде виртуальной машины. Вероятно, вам будет интересно почитать этот ответ. Он про Java 8, но принципиально ничего не изменилось.