Ответ
Хэш-структуры (HashMap, HashSet) стоит использовать, когда нужен быстрый доступ к данным по ключу (O(1) в среднем случае). Основные сценарии:
- Частые операции поиска/вставки/удаления
- Когда порядок элементов не важен
- Для хранения уникальных элементов (HashSet)
- Для связи ключ-значение (HashMap)
Пример с HashMap:
val userScores = HashMap<String, Int>()
userScores["Alice"] = 100 // Вставка O(1)
val score = userScores["Alice"] // Поиск O(1)
Минусы: больше памяти, чем у массивов/списков, возможны коллизии. Не подходит, когда важен порядок элементов или нужен range-запрос.