Хешмап по существу представляет собой массив списков. Например, допустим, что данный хэш-массив имеет массив из 100 списков. Когда вы добавляете что-то к нему, хэш-код вычисляется для этого объекта. Затем модуль этого значения и количество списков (в этом случае 100) используются для определения того, к какому списку он добавляется. Поэтому, если вы добавите объект с hashcode 13, он добавится в список 13. Если вы добавите объект с кодом 16303512, он добавится в список 12.
Коэффициент загрузки указывает на хэш-карту, когда необходимо увеличить количество списки. Он основан на количестве элементов на всей карте и текущей емкости.
В вашем первом сценарии, где hashcode всегда возвращает 1, независимо от того, сколько списков есть, ваши объекты попадают в один список (это плохо). Во втором сценарии они будут распределяться более равномерно по всем (это хорошо.)
Поскольку коэффициент загрузки основывается на общем размере карты, а не на списке, качество ваших хэш-кодов на самом деле не взаимодействует с loadfactor. В первом сценарии он будет расти точно так же, как и во втором, но все будет в конечном итоге в том же списке независимо.
[Фактор нагрузки в первую очередь связан с качеством хэш-функции.] (Http://stackoverflow.com/a/1573991/1371329) – jaco0646
, если hashcode отвечает за распространение, а затем, когда loadfactor появляется на картинке и как это влияет распределение близко к 0 или 1 – quintin
Как я уже объяснил, если все ваши объекты имеют одинаковый хэш-код, коэффициент загрузки не имеет значения. Поиск на карте вырождается до выполнения поиска в несортированном списке. – JimmyJames