Я использую .hashCode () для создания хэшей.Есть ли библиотека для двойного хеширования в Java для разрешения коллизий? - PullRequest
1 голос
/ 26 сентября 2019

В качестве домашней задачи я пытаюсь создать реализацию хэш-карты с использованием массива.Я использую .hashCode () для создания хэша, и мне нужно найти способ разрешения коллизий.

Я думал об использовании двойного хеширования, но я не могу найти способ сделать это в Java.Я также попытался выполнить поиск по SO, но большинство вопросов касаются того, как обрабатывается разрешение коллизий и т. Д., А не как реализовать решение.Кто-нибудь сможет указать мне какие-нибудь простые альтернативы, если нет библиотеки для двойного хеширования?

1 Ответ

1 голос
/ 26 сентября 2019

Двойное хэширование - это, вероятно, то, что вы захотите сделать в производственном коде, но для упражнения в классе это, вероятно, излишество.

Вместо этого вам нужно реализовать связанный список, прикрепленный ккаждый сегмент хэш-карты, и когда у вас есть "коллизия" (то есть, более одного объекта отображается на один и тот же ключ в массиве), вы просто добавляете еще одну ссылку в список с новым объектом.Хорошую иллюстрацию можно найти здесь .

Хорошее объяснение вместе с визуальными графиками, демонстрирующими это решение, можно найти здесь: https://www.geeksforgeeks.org/internal-working-of-hashmap-java/

Вы также можете найтиследующие ТАК вопросы + ответы актуальны: Что именно представляет собой корзина в hashmap?

...