Sobes.tech
Назад к вопросам
Junior — Middle
67

Объясните различия между классами HashMap и Hashtable и в каких случаях предпочтительно использовать каждый из них.

Компании, где спрашивали
Ви6 Сервисес

Ответ от нейросети

sobes.tech AI

HashMap и Hashtable — это реализации интерфейса Map в Java, но между ними есть ключевые отличия:

  • Синхронизация: Hashtable синхронизирован (thread-safe), что делает его медленнее в однопоточных приложениях. HashMap не синхронизирован, поэтому быстрее, но не безопасен для многопоточного доступа без внешней синхронизации.

  • Поддержка null: HashMap позволяет использовать один null-ключ и несколько null-значений. Hashtable не допускает null ни в ключах, ни в значениях.

  • Наследование: Hashtable — устаревший класс, наследуется от Dictionary, а HashMap — от AbstractMap.

Когда использовать:

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

Пример использования HashMap:

Map<String, Integer> map = new HashMap<>();
map.put(null, 1); // допустимо
map.put("key", 2);