Первым делом первым.
Вам следует рассмотреть возможность использования HashMap вместо Hashtable, так как последний считается устаревшим (он обеспечивает неявную синхронизацию, которая не требуется большую часть времени. Если вам нужен синхронизированный HashMap, это легко выполнимо)
Теперь по вашему вопросу.
Hashcode не гарантированно уникален математически,
однако, когда вы используете HashMap (или Hashtable), это не имеет значения.
Если два ключа генерируют один и тот же хэш-код, для каждого из ключей автоматически вызывается равенство, чтобы гарантировать, что будет получен правильный объект.
Если вы используете строку в качестве ключа, вы не беспокоитесь,
Но если вы используете свой собственный объект в качестве ключа, вы должны переопределить методы equals и hashCode.
Метод equals является обязательным для правильной работы HashMap, тогда как метод hashCode должен быть закодирован так, чтобы хеш-таблица была относительно разреженной (в противном случае ваша хеш-карта будет просто длинным массивом)
Если вы используете Eclipse, есть простой способ сгенерировать hashCode и equals, он в основном сделает всю работу за вас.