Абсолютно используйте первый метод, потому что, если вы используете второй, вам потребуется хеш-таблица, в которой доступно 1x10^(25m), where x is the maximum length of a key
слотов.
Например, если максимальное число ключей может быть 9999, m
будет равно 4, и вам потребуется 1x10 ^ 100 слотов в вашей таблице.
Пояснение:
Идея, лежащая в основе хеш-таблицы, заключается в том, что вы можете получить произвольный доступ к любому элементу с эффективностью O (1) (за исключением коллизий), поскольку хеш любого элемента влияет на его положение в хеш-таблице . Так, например, если я хэширую Object X и возвращаем хеш-код 24 (или какой-то хеш-код строки, который преобразуется в число, которое оказывается равным 24), я просто перехожу к слоту 24 моей таблицы (часто реализуемому как массив), и может получить Объект X.
Но если бы вы использовали свой второй метод (объединение 25 чисел - мы скажем цифры, чтобы упростить вещи здесь - вместе, чтобы сделать хеш), самый большой хеш был бы 9999999999999999999999999. Поэтому, чтобы извлечь этот объект из хеш-таблицы, вам придется извлечь его из позиции 9999999999999999999999999 - это означает, что на вашем столе должно быть как минимум столько мест.
И помните, с первым - поскольку вы используете бинарное дерево, коллизии действительно не будут иметь большого значения. В худшем случае это будет эффективность извлечения / вставки O (log (n)), которая на самом деле не так уж и плоха.