Ответ
Плюсы:
- Быстрый доступ к элементам (в среднем O(1))
- Эффективные операции вставки и удаления
- Удобны для хранения пар ключ-значение
- Хороши для реализации кэшей, словарей
Минусы:
- Нет гарантии порядка элементов
- Коллизии могут ухудшить производительность
- Требуют больше памяти, чем массивы
- Неэффективны для операций, требующих сортировки (например, диапазонные запросы)
Пример с HashMap в Kotlin:
val map = hashMapOf("a" to 1, "b" to 2)
println(map["a"]) // 1 - быстрый доступ
map["c"] = 3 // быстрая вставка