Разница между HashMap и Hashtable часто спрашивает другие. Я суммирую это здесь сегодня.
(I) История наследования отличается
Hashtable Public Class Extends Dictionary реализует Mappublic Class Hashmap расширяет AbstractMap Реализации карты
Hashtable унаследован от класса словаря, а HashMap - это реализация интерфейса карты, представленной Java 1.2.
(Ii) Различная безопасность
HashMap не синхронизирован, а Hashtable синхронизируется по умолчанию, что означает, что хэштабь безопасен для потоков, а несколько потоков могут делиться хэштетом; И если нет правильной синхронизации, несколько потоков не могут делиться Hashmap. Java 5 позже предоставляет concurrenthashmap, который является заменой хэштата и имеет лучшую масштабируемость, чем хэштата. Конечно, мы можем синхронизировать HashMap с помощью:
Карта m = collections.synchronizemap (hashmap);
(Iii) то же самое или схоже по нулевым значениям
HashMap позволяет использовать нулевые значения в качестве ключа или значение для записи таблицы. В HashMap есть только одна запись, которая может быть пустой ключом, но любое количество записей может быть пустым значением. То есть, если в таблице нет ключа поиска, или если клавиша поиска найдена, но это пустое значение, то get () вернет NULL; В то время как хэштабл не работает, ни ключ, ни значение не допускают нулевые значения.
(Iv) Внутренние реализации двух методов обхода разные
Hashtable и Hashmap оба используют итератор итератор. Итератор HashMap-это неудачный итератор, в то время как итератор перечислителя хэштата не является неудачным. По историческим причинам Hashtable также использует метод перечисления.
(V) Различное использование значений хэша
Hashtable непосредственно использует хэшкод объекта, в то время как HashMap необходимо пересчитать хэш -значение.
(Vi) Метод начального размера и расширения массива внутренних методов реализации различен.
Размер по умолчанию хэш -массива в хэштебе составляет 11, а метод увеличения - старый*2+1; Размер по умолчанию хэш -массива в HashMap составляет 16, и он должен быть показателем 2.
Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!