Sobes.tech
Junior — Middle
117

Erklären Sie die Unterschiede zwischen den Klassen HashMap und Hashtable und in welchen Fällen es vorzuziehen ist, jede von ihnen zu verwenden.

Unternehmen wurden gefragt
Ви6 Сервисес

Antwort von AI

sobes.tech KI

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);