@hypnogaja

Как суммировать две коллекции по ключам и значениям?

Всем привет.
Есть коллекция:
private val ABC: MutableMap<Int, Int> = mutableMapOf()


есть функция
fun addABC(type: Enum<Type>, denomination: Int, amount: Int) {
            when (type) {
                Type.ABC -> {
                    ABC += ABC.put(denomination, amount)
                }
            }
        }


Как прибавить уже к существующей коллекции значения новой коллекции в функции?
То есть сделать ABC(1=2) + ABC (2=5) + ABC(1=5) = ABC(1=7, 2=5)

Спасибо
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Cheverikov_vv
Java / Kotlin developer
Предлагаю такую реализацию функции, которая позволяет сложить несколько экземпляров Map. Если необходимо что-то более универсальное (например со сложением не только Int) - посмотри в сторону generics.

fun mapsSum(vararg maps: Map) = maps
.map { it.toList() }.flatten() // Преобразуем все Map в список Pair
.groupBy { it.first } // Группируем по уникальным ключам
.map { (key, pairList) -> pairList.sumBy { it.second } } // Для каждого ключа считаем сумму

fun main() {
val firstABC = mutableMapOf(1 to 2, 2 to 5)
val secondABC = mutableMapOf(1 to 5)

println(mapsSum(firstABC, secondABC))
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы