Суммируйте значения карты в kotlin - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть карта с такой структурой:

"Alex": [Work(workPlace="workPlace", years=1),
        Work(workPlace="workPlace", years=4),
        Work(workPlace="workPlace", years=5),
        Work(workPlace="workPlace", years=1)],

"John": [Work(workPlace="workPlace", years=2),
        Work(workPlace="workPlace", years=2),
        Work(workPlace="workPlace", years=1),
        Work(workPlace="workPlace", years=6)]

Как лучше всего суммировать значения?

Например, как я могу суммировать все годы Алекса и Джона?

1 Ответ

2 голосов
/ 10 апреля 2020

Я думаю, вы в основном ищете функцию mapValues, которая позволяет преобразовывать значения карты, сохраняя при этом ее ключи. Вы можете использовать это как-то так:

val people: Map<String, List<Work>> = ...
val peopleToSumOfYears: Map<String, Int> = 
        people.mapValues { (name, works) -> works.sumBy { it.years } }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...