Хэширование не может быть функцией «один к одному», которая обеспечивает уникальный вывод для каждого входа просто потому, что обычно кодомен функции меньше, чем домен, поэтому то, что вы спрашиваете, невозможно .
Конечно, если длина строки ограничена и набор всех возможных строк меньше, чем точная граница, вы можете получить то, что называется совершенная хеш-функция .
Вы можете просто найти хорошую функцию хеширования с низкой вероятностью столкновения, просто начните с здесь и получайте удовольствие!
примечание: если я не ошибаюсь, Java Hashtable
не использует открытую адресацию.Всякий раз, когда обнаруживается столкновение, элемент помещается в ту же, уже занятую, ячейку через список.Таким образом, это определенно противоположно тому, что вы думаете. внедрения не пытаются гарантировать уникальность, вместо этого они выбирают хорошую стратегию разрешения столкновений, которая минимизирует некоторые аспекты