Глядя на источник реализации Hashtable, похоже, что он уже использует отдельную цепочку. Если вы посмотрите на класс Entry<K,V>
, начинающийся со строки 901, вы увидите, что он имеет ссылку на другую запись с именем next
. Если вы затем посмотрите на метод put()
, в строке 420 ссылка next
заполняется через конструктор, чтобы быть тем элементом, который был ранее сохранен в этом сегменте.
Обратите внимание, что вы, как правило, не должны беспокоиться о деталях реализации, подобных этим. Платформа Java Collections Framework, вероятно, является одной из наиболее широко используемых сред Java, и поэтому вы должны предположить, что авторы настроили производительность так, чтобы она была такой же хорошей, как и она.
Еще одна вещь, на которую я хотел бы обратить внимание, это то, что класс Hashtable был в основном заменен классом HashMap
(который также использует отдельную цепочку, см. здесь ) , Основное различие между ними состоит в том, что все методы в Hashtable
синхронизированы, тогда как в HashMap
они не синхронизированы. Это приводит к повышению производительности в ситуациях, когда вы работаете в однопоточной среде (возможно, причина этого вопроса?).
Если вам нужно нужна реализация потокобезопасной карты, тогда вам следует рассмотреть либо обертывание нормального HashMap
при вызове Collections.synchronizedMap()
, либо использование ConcurrentHashMap
.