TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #254 5.99K
В чем разница меду hashmap и hashtable ?
Спросят с вероятностью 19%

HashMap и Hashtable являются двумя структурами данных, предназначенными для хранения данных в форме пар "ключ-значение", но между ними есть несколько ключевых отличий:

Синхронизация

- Hashtable является потокобезопасным благодаря синхронизации методов. Это означает, что он безопасно использовать в многопоточных приложениях без внешней синхронизации.
- HashMap не является потокобезопасным и не обеспечивает синхронизацию методов. Это делает его более быстрым в средах с однопоточным доступом. Для использования в многопоточных приложениях необходимо обеспечивать внешнюю синхронизацию или использовать ConcurrentHashMap.

Null значения

- HashMap позволяет один его ключ и множество его значений.
- Hashtable не позволяет такой ключи и такие значения. Попытка вставить его в Hashtable приведет к выбросу NullPointerException.

Наследование

- HashMap является частью новой коллекционной фреймворка, введенной в Java 2, и наследует абстрактный класс AbstractMap.
- Hashtable была введена в ранних версиях Java и наследует класс Dictionary. Хотя она была реорганизована в коллекционный фреймворк, она считается устаревшей для нового кода.

Итератор и Enumerator

- HashMap предоставляет итераторы, которые используются для перебора элементов. Итераторы HashMap являются fail-fast, что означает, что они выбросят ConcurrentModificationException, если структура HashMap будет изменена в любое время после создания итератора, кроме его собственных методов remove.
- Hashtable предоставляет как итератор, так и Enumerator. Enumerator для Hashtable не является fail-fast.

Производительность

- HashMap обычно предлагает лучшую производительность в сравнении с Hashtable, поскольку отсутствие синхронизации делает его быстрее.

Резюме

- Используйте HashMap для не потокобезопасных реализаций без null ключей и значений.
- Используйте Hashtable в многопоточных приложениях, где требуется потокобезопасность и отсутствие null ключей и значений.
- В современном Java коде предпочтение обычно отдается ConcurrentHashMap для потокобезопасных реализаций и HashMap для остальных случаев за счет лучшей производительности и более широкой функциональности.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
  • 👍 25
  • 😁 2
  • 🤔 1
More from @easy_java_ru
  1. Oct 11, 2026🤔 Какой класс позволяет читать данные из входного байтового потока в формате примитивных…
  2. Oct 11, 2026🤔 Чем отличается where от having ? WHERE и HAVING используются для фильтрации записей, но…
  3. Oct 10, 2026🤔 На основании какой структуры данных реализован ArrayList? ArrayList реализован на базе…
  4. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
  5. Oct 9, 2026🤔 В чём различие между LeftJoin , RightJoin и InnerJoin? LEFT JOIN, RIGHT JOIN и INNER JO…
  6. Oct 8, 2026🤔 Что такое поток "демон"? Демон-поток — это поток, который: - Работает на фоне (например…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →