Коэффициент загрузки в первую очередь связан с качеством хэш-функции. Чем ближе к нулю коэффициент загрузки, тем меньше вероятность коллизий, даже если хеш-функция не так велика. Компромисс заключается в том, что объем памяти больше. Другими словами, HashMap не распределяет записи по отдельным корзинам для каждого отдельного хэш-кода, а группирует их по близости, поэтому чем больше у нее корзин, тем шире распределение, тем меньше вероятность коллизий.
Таким образом, суть в том, что вы возитесь с коэффициентом загрузки, чтобы улучшить время поиска или уменьшить объем памяти в соответствии с вашими потребностями и объектами, которые вы храните на карте.
ConcurrencyLevel действительно зависит от вашего приложения. Если у вас есть только два или три потока, работающих в приложении, все готово. Если вы являетесь сервером приложений с произвольным количеством потоков, то вам нужно понимать, какая у вас грузоподъемность и в какую точку вы хотите оптимизировать.
Качественная реализация хеш-кода обеспечивает как можно более широкое распределение потенциальных значений объекта с наименьшим количеством коллизий при соблюдении условий контракта. Другими словами, это позволяет HashMap (или Set, в зависимости от обстоятельств) распределять объекты по отдельным корзинам, что ускоряет поиск.
person
Yishai
schedule
15.10.2009