Gymterview
junior

Зачем нужен HashMap, если есть Hashtable

HashMap был добавлен в Java 1.2 как несинхронизированная замена Hashtable, по тем же причинам, что и ArrayList для Vector.

Характеристика HashMap Hashtable
Синхронизация Нет Все методы synchronized
null-ключ Допускает (один) Не допускает (NPE)
null-значение Допускает (любое кол-во) Не допускает (NPE)
Итератор fail-fast (Iterator) Enumeration + Iterator
Версия Java 1.2 (JCF) 1.0 (legacy)
Производительность Быстрее Медленнее
Статус Рекомендуется Устаревший

Hashtable — устаревший класс, его использование не рекомендовано. Для потокобезопасного ассоциативного массива следует использовать ConcurrentHashMap, который обеспечивает лучшую масштабируемость за счет сегментной блокировки (в Java 8+ — блокировки на уровне корзин).

На собеседовании: назовите три отличия: синхронизация, null, fail-fast. Упомяните ConcurrentHashMap как правильную потокобезопасную альтернативу.