Різниця між HashMap і Hashtable на Java
Зміст
Обидва HashMap і Hashtable використовуються для представлення а група об’єктів які представлені в Росії
Перегляньмо порівняльну діаграму, представлену нижче, щоб дізнатися ще кілька відмінностей між HashMap і Hashtable.
- Порівняльна діаграма
- Визначення
- Ключові відмінності
- Схожість
- Висновок
Порівняльна діаграма
Основа для порівняння | HashMap | Хештейн |
---|---|---|
Впровадити / продовжити | Клас HashMap реалізує інтерфейс Map і розширює клас AbstractMap. | Hashtable розширює клас Словник Legacy, але він перероблений заново і тепер також реалізує інтерфейс Map. |
Синхронізація | HashMap несинхронізований, а значить, об'єкт HashMap не є безпечним для потоків. | Hashtable синхронізований, а значить, об'єкт Hashtable є безпечним для потоків. |
Ключі / значення | Ключ може повернути Null лише один раз, але значення може повернути Null будь-яку кількість разів. | Ключ не може повернути Null, оскільки він використовується для отримання хеш-коду, який буде використовуватися як індекс таблиці хешу, а також значення не може повернути Null. |
Початкова потужність за замовчуванням | Типова початкова ємність HashMap - 16. | Типова початкова ємність Hashtable - 11. |
Проїзд | HashMap проходить Iterator. | Подібно до класу Map Hashtable також безпосередньо не підтримує Iterator для подорожі, а отже, він використовує Enumerator. |
Визначення HashMap
HashMap - клас, який реалізує Карта інтерфейс і розширює Анотаційна карта клас використовує хеш-таблицю. Об'єкт HashMap відноситься до колекції / набору / * K являє собою ключ, а V являє собою значення * / клас HashMap Перший конструктор - це конструктор за замовчуванням, який ініціалізує порожній об’єкт HashMap з ємністю за замовчуванням 16 та коефіцієнтом заповнення за замовчуванням 0,75. Другий конструктор ініціалізує хеш-карту зі значенням m. Третій конструктор створює хеш-карту з початковою ємністю, що відповідає значенню, наведеному в аргументі "місткість". Четвертий конструктор ініціалізує хеш-карту з ємністю та коефіцієнтом заповнення, передбаченим у параметрах. давайте тепер дізнаємося, як подавати записи на хеш-карту. Hashmap hm = новий Hashmap (); hm.put ("Аджай", 275); hm.put ("Vijay", 250); hm.put ("Джоні", 150); hm.put ("Йорданія", 200); System.out.ln (hm); / * вихід * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} У наведеному вище коді ви бачите, що я створив порожній HashMap об’єкт хм з початковою ємністю за замовчуванням та коефіцієнтом заповнення за замовчуванням Потім я вставив чотири записи у хеш-карту методом put (K, V), який відображає ключ до значення. Ви можете помітити, що записи не редагуються в послідовності, в яку ви їх подаєте, оскільки порядок вставки не встановлений. Тепер розглянемо випадок, коли ви вже маєте запис Хештел - клас, який розширює Словник клас, який є застарілим класом і реінжинірований для реалізації Карта інтерфейс. Hashtable використовує хеш-таблицю як свою структуру даних. Hashtable схожий на HashMap, оскільки тут також об’єкт Hashtable відноситься до колекції записів, де кожен запис є парою / * K вказує ключ, а V визначає значення, пов'язане з ключем * / клас Hashtable У наведеному вище коді перший конструктор - це конструктор за замовчуванням, який створює порожній об’єкт класу Hashtable, його розмір за замовчуванням - 11, а коефіцієнт заповнення за замовчуванням - 0,75. Другий конструктор створює хеш-таблицю з розміром, відповідним значенню, наведеному в параметрі «size». Третій конструктор створює хеш-таблицю з розміром і коефіцієнтом заповнення, передбаченими в параметрі. Четвертий конструктор ініціалізує хеш-таблицю зі значенням m. Давайте тепер навчимося вставляти Hashtable ht = новий Hashtable (); ht.put (новий хеш-код (2), 275); ht.put (новий хеш-код (12), 250); ht.put (новий хеш-код (16), 150); ht.put (новий хеш-код (8), 200); System.out.ln (ht); / * вихід * / {12 = 250, 16 = 150,2y = 275, 8 = 200} У наведеному вище коді я створив порожній об’єкт Hashtable і вставив чотири записи методом put (). Внутрішній метод методу я назвав hashCode (), який обчислює і повертає значення хеш-коду, яке буде виконувати роль індексу об'єкта введення. Як ви бачите, я не згадував розмір хеш-таблиці, тому за замовчуванням він буде 11. Тут також порядок вставки не зберігається і, отже, коли редакторські записи не з’являлися в послідовності подачі. HashMap кращий по продуктивності, оскільки його об'єкти несинхронізовані, і багато потоків можуть працювати над ним одночасно, а значить, це швидше, ніж Hashtable.
Визначення Hashtable
Подібність:
Висновок: