Почему возникают коллизии?

174
01 ноября 2017, 01:12

Как известно, ситуация, когда у разных объектов одинаковые хеш-коды называется — коллизией. Вероятность возникновения коллизии зависит от используемого алгоритма генерации хеш-кода.

Но вот вопрос, почему она возникает? Неужели тяжко придумать "защиту" от возникновения коллизии? Кто что думает?

Answer 1

Хеш код в java создается методом

  public int hashCode()

У integer диапазон от -2147483648 до 2147483647, т.е. округлив получаем 4 миллиарда разных целых чисел.

А теперь представим ситуацию, у вас 8-10 миллиардов объектов. Вопрос: как каждому из них дать уникальный хеш код используя диапазон в 4 миллиарда?

Ответ: никак.

При этом вы не знаете сколько объектов вашего класса могут создать пользователи.

Если ваш класс будет использоваться в Hash структурах как ключ, вы так же должны постараться обеспечить объекты такими хеш кодами, чтобы они попадали в разные корзины и получить равномерное заполнение структуры.

READ ALSO
Асинхронное чтение/запись в Realm используя RXJava 2

Асинхронное чтение/запись в Realm используя RXJava 2

Моя первая реализация асинхронной работы с помощью RXJava 2

157
Не могу понять почему актинвость сама меняет жизненный цикл

Не могу понять почему актинвость сама меняет жизненный цикл

Есть приложение которое в потоке Asnytask в методе doİnBackground качает данные и парсит их в Map передает его в onPostExecute метод в котором в İntent кладется...

183
как можно организовать логаут после timeout в jsf?

как можно организовать логаут после timeout в jsf?

У меня есть обычная страница авторизации на сервере

217