Назад к вопросам
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);