User
Поспешил с предыдущим комментарием, поправил, в итоге:
fun getResultList() = getFeatures() .groupBy { it.categoryId } .let { getCategories() .flatMap { category -> listOf(category, *it[category.categoryId]? .toTypedArray()?:emptyArray(), category.categoryId ) } }
Решение в итоге красивое. Попробовал чуть оптимизировать производительность:
fun getResultList() = getFeatures().associateBy { it.categoryId } .let { getCategories().flatMap { category -> listOf( category, it[category.categoryId], category.categoryId ) } }
Не понял фразы начет Dispatchers.Unconfined - Корутина будет продолжена на том же потоке, на котором была запущена.
Поспешил с предыдущим комментарием, поправил, в итоге:
Решение в итоге красивое. Попробовал чуть оптимизировать производительность:
fun getResultList() = getFeatures().associateBy { it.categoryId }
.let {
getCategories().flatMap { category ->
listOf( category,
it[category.categoryId],
category.categoryId
) }
}
Не понял фразы начет Dispatchers.Unconfined - Корутина будет продолжена на том же потоке, на котором была запущена.