Что выведет код Middle Коллекции и последовательности обновлено
groupBy, associateBy и eachCount
Вопрос
Что выведет код? По строке на каждый вывод.
data class Order(val user: String, val sum: Int)
fun main() {
val orders = listOf(Order("ann", 5), Order("bob", 3), Order("ann", 2))
println(orders.groupBy { it.user }.mapValues { (_, v) -> v.sumOf { it.sum } })
println(orders.associateBy { it.user }.mapValues { it.value.sum })
println(orders.groupingBy { it.user }.eachCount())
println(orders.maxBy { it.sum }.user)
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: {ann=7, bob=3}, {ann=2, bob=3}, {ann=2, bob=1}, ann. groupBy собирает все заказы пользователя, сумма у ann 7. associateBy оставляет один заказ на ключ, последний: у ann это заказ на 2. groupingBy().eachCount() считает количество.
Что выведет
{ann=7, bob=3}
{ann=2, bob=3}
{ann=2, bob=1}
ann
Разбор
groupBy собирает все заказы пользователя, сумма у ann 7. associateBy оставляет один заказ на ключ, последний: у ann это заказ на 2. groupingBy().eachCount() считает количество. Порядок ключей совпадает с порядком первого появления, потому что результат это LinkedHashMap.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.