Разница между HashMap и Hashtable в Java
Содержание
HashMap и Hashtable, оба используются для представления группа объектов которые представлены в
Давайте посмотрим на диаграмму сравнения, показанную ниже, чтобы узнать больше различий между HashMap и Hashtable.
- Сравнительная таблица
- Определение
- Ключевые отличия
- сходства
- Заключение
Сравнительная таблица
Основа для сравнения | HashMap | Хеш-таблица |
---|---|---|
Внедрить / расширить | Класс HashMap реализует интерфейс Map и расширяет класс AbstractMap. | Hashtable расширяет класс Dictionary Legacy, но он переработан и теперь также реализует интерфейс Map. |
синхронизация | HashMap не синхронизирован, и, следовательно, объект HashMap не является поточно-ориентированным. | Hashtable синхронизируется, и, следовательно, объект Hashtable является потокобезопасным. |
Ключи / Value | Ключ может вернуть Null только один раз, но значение может вернуть Null любое количество раз. | Ключ не может вернуть Null, поскольку он используется для получения хеш-кода, который будет использоваться в качестве индекса хеш-таблицы, а значение не может возвращать Null. |
Начальная емкость по умолчанию | Начальная емкость по умолчанию HashMap составляет 16. | Начальная емкость по умолчанию Hashtable составляет 11. |
Обход | HashMap просматривается итератором. | Как и класс Map, Hashtable также напрямую не поддерживает Iterator для обхода и, следовательно, использует Enumerator. |
Определение HashMap
HashMap - это класс, который реализует карта интерфейс и расширяет AbstractMap Класс использует хеш-таблицу. Объект HashMap ссылается на коллекцию / набор / * K представляет ключ, а V представляет значение * / class HashMap Первый конструктор является конструктором по умолчанию, который инициализирует пустой объект HashMap с емкостью по умолчанию 16 и коэффициентом заполнения по умолчанию 0,75. Второй конструктор инициализирует хэш-карту со значением m. Третий конструктор создает хэш-карту с начальной емкостью, соответствующей значению, указанному в аргументе «емкость». Четвертый конструктор инициализирует хэш-карту с емкостью и коэффициентом заполнения, указанными в параметрах. давайте теперь узнаем, как кормить записи в хэш-карте. Hashmap hm = new Hashmap (); hm.put («Аджай», 275); hm.put («Виджай», 250); hm.put («Джонни», 150); hm.put («Джордан», 200); System.out.ln (хм); / * вывод * / {Виджай = 250, Джонни = 150, Аджай = 275, Иордания = 200} В приведенном выше коде вы можете видеть, что я создал пустой объект HashMap гм с начальной емкостью по умолчанию и коэффициентом заполнения по умолчанию. Затем я вставил четыре записи в хеш-карту, используя метод put (K, V), который сопоставляет ключ со значением. Вы можете заметить, что записи не редактируются в последовательности, которую вы вводите, потому что порядок вставки не фиксирован. Теперь рассмотрим случай, когда у вас уже есть запись Hashtable это класс, который расширяет Словарь класс, который является унаследованным классом и реинжиниринг для реализации карта интерфейс. Hashtable использует хеш-таблицу в качестве своей структуры данных. Hashtable похож на HashMap, поскольку здесь также объект Hashtable относится к коллекции записей, где каждая запись представляет собой пару / * K указывает ключ, а V указывает значение, связанное с ключом * / class Hashtable В приведенном выше коде первый конструктор является конструктором по умолчанию, который создает пустой объект класса Hashtable, его размер по умолчанию равен 11, а коэффициент заполнения по умолчанию равен 0,75. Второй конструктор создает хеш-таблицу с размером, соответствующим значению, указанному в параметре «размер». Третий конструктор создает хеш-таблицу с размером и коэффициентом заполнения, указанными в параметре. Четвертый конструктор инициализирует хеш-таблицу значением m. Давайте теперь узнаем, как вставить Hashtable ht = new Hashtable (); ht.put (новый hashCode (2), 275); ht.put (новый hashCode (12), 250); ht.put (новый hashCode (16), 150); ht.put (новый hashCode (8), 200); System.out.ln (ht); / * вывод * / {12 = 250, 16 = 150,2y = 275, 8 = 200} В приведенном выше коде я создал пустой объект Hashtable и вставил четыре записи, используя метод put (). Внутри метода put я вызвал hashCode (), который вычисляет и возвращает значение хеш-кода, которое будет действовать как значение индекса для объекта ввода. Как вы можете видеть, я не упомянул размер хеш-таблицы, поэтому по умолчанию он будет равен 11. Здесь также порядок вставки не сохраняется и, следовательно, когда записи ed не появлялись в последовательности, они передавались. HashMap лучше работает, поскольку его объекты не синхронизированы, и несколько потоков могут работать с ним одновременно, и, следовательно, он работает быстрее, чем Hashtable.
Определение хэш-таблицы
сходства:
Заключение: