Какая структура данных в Java предназначена для хранения пар ключ-значение?
Подробное объяснение
Для хранения пар ключ-значение в Java используется интерфейс Map, а его реализация HashMap является одной из самых распространенных. В отличие от списков (LinkedList, ArrayList), которые хранят элементы последовательно, или множеств (HashSet), которые хранят только уникальные элементы, HashMap позволяет связывать ключи со значениями и быстро получать значение по ключу. Правильный ответ — HashMap.
Часто задаваемые вопросы (FAQ)
1
В чем разница между HashMap и HashSet?
HashMap хранит пары ключ-значение, а HashSet хранит только уникальные элементы. HashSet реализован на основе HashMap, но использует только ключи, а значения являются фиктивными.
2
Какие еще реализации Map существуют в Java?
Помимо HashMap, есть TreeMap (сортировка по ключам), LinkedHashMap (сохраняет порядок вставки), Hashtable (устаревшая, синхронизированная) и ConcurrentHashMap (потокобезопасная).
3
Можно ли хранить null в качестве ключа в HashMap?
Да, HashMap допускает один ключ null и множество значений null. TreeMap не допускает null-ключи, если не используется компаратор, поддерживающий null.
Типичные ошибки
1
Выбор ArrayList или LinkedList для хранения пар ключ-значение
Эти классы реализуют интерфейс List, который хранит упорядоченные элементы по индексу, а не по ключу. Для доступа к элементу по ключу потребуется поиск, что неэффективно.
2
Выбор HashSet для хранения пар ключ-значение
HashSet реализует интерфейс Set и хранит только уникальные элементы, без связывания с ключами. Он не позволяет хранить пары и получать значение по ключу.
3
Путаница между HashMap и Hashtable
Хотя оба хранят пары ключ-значение, Hashtable является синхронизированной и не допускает null-ключи/значения, а HashMap — нет. В современных приложениях предпочтительнее HashMap или ConcurrentHashMap.