Розбираємося, як у Kotlin працювати з групуванням колекцій через
groupBy: чому результат — це
Map<K, List<T>>, як безпечно читати групи (обходом і за ключем із
?:), як нормалізувати ключі (
trim()/
lowercase()) і як використовувати перевантаження
groupBy(keySelector, valueTransform), щоб зберігати в групах лише потрібні дані.