HashMap datastructure распределяет ключи среди своих ковшей на основе хэш-кода ключа. В основном, если алгоритм хеширования очень хорош, все ключи будут распределяться между разными ковшиками. Но что, если все ключи возвращают один и тот же хэш-код? Операции вставки/извлечения будут иметь порядок O (n).Как обеспечить равномерное распределение в HashMap?
Если бы я реализовал свой собственный HashMap, как бы я (или что мне делать), чтобы обеспечить равное распределение среди ведер? Есть ли даже способ?
Сгенерировать хэши _from what? _ В Java потребитель HashMap, а не автора структуры данных, получает возможность выбора 'hashCode()'. –
Вы можете рандомизировать генерацию хешей, но это создает реальную проблему при поиске. Я мог бы создать HashMap, поддерживаемый массивом TreeMaps. Таким образом, я бы оценил сопоставимость ключей для ввода/извлечения (и, надеюсь, сделает все это в Log (n)). Но это просто откладывает проблему до функции Comparable. Есть ли математическая функция, которую я мог бы использовать вместо этого? Или какой-то другой шаблон дизайна? –
Почему это создает проблему при поиске? Ключ всегда имеет хэши того же значения. – stark