Как я могу понять это предложение «два экземпляра с одинаковым значением хеш-функции не обязательно сравниваются одинаково». - PullRequest
0 голосов
/ 25 марта 2019

Когда я читал книгу Advanced Swift и в главе «Требуемое значение для хэширования», меня смутило это объяснение

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

Как я могу понять «обратную» ситуацию, или почему два экземпляра имеют одинаковый хэшзначение не обязательно сравнивается одинаково.

1 Ответ

1 голос
/ 30 марта 2019

Представьте значение хеш-функции как quick , compact , неуникальный идентификатор для данного экземпляра объекта.Единственное сложное условие: если два объекта сравниваются одинаково, согласно оператору ==, то оба экземпляра должны иметь одинаковое хеш-значение.Вот и все, что нужно;)

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

...