Вы можете никогда полностью избегать коллизий с хэш-кодами (за исключением типов, которые имеют менее 2 ^ 32 возможных различных значений, таких как шорты или байты или что-то в этом роде).Написание хорошего хэша просто означает минимизацию ваших коллизий настолько, насколько вы можете.Вы можете сделать это, приложив все усилия, чтобы гарантировать, что ваши хэш-коды (приблизительно) равномерно распределены по всему диапазону int
.
Вы также можете попытаться избежать столкновения определенных значений, обычно используемых вместе (например, вы можете придумать алгоритм генерации для дат, чтобы даты на той же неделе не конфликтовали, и чтобы все коллизии были вкроме этих дат).
Но каждый раз, когда вы используете сгенерированные хэш-коды, вам нужен какой-то механизм для обработки коллизий.