#android #dictionary #kotlin #collections
#Android #словарь #kotlin #Коллекции
Вопрос:
У меня есть SortedMap<String, MutableList<Double>>
тип, который мне нужно преобразовать / сопоставить SortedMap<String, Double>
. MutableList<Double>
В первом типе представлен список расходов, и теперь я хочу добавить все это в общую сумму и вместо этого использовать общую сумму. Строковый объект в обоих типах остается неизменным.
В настоящее время у меня есть эта реализация:
val sortedEntryMap = dateToEntriesMap.toSortedMap() // SortedMap<String, MutableList<Double>>
val dailyEntryList = mutableListOf<Pair<String, Double>>()
for ( dailyEntry in sortedEntryMap ) {
var dailyTotal = 0.0
for (entry in dailyEntry.value ) {
dailyTotal = entry
}
dailyEntryList.add(Pair(dailyEntry.key, dailyTotal))
}
но я хотел бы иметь более чистую (более Kotlin) реализацию, чем эта. Что-то вроде: dailyEntryList = sortedEntryMap.map { something, something }
Метод map(), вероятно, не подходит для использования, но я просто блуждал, есть ли способ сделать это в одной строке кода?
Комментарии:
1. так что же вам нужно
SortedMap<String, Double>
илиMutableList<Pair<String, Double>>
?2. Мне нужен первый вариант.
Ответ №1:
Вы можете просто сделать
sortedEntryMap.mapValues { (_, v) -> v.sum() }
чтобы получить карту с теми же ключами и преобразованными значениями
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/map-values.html
Комментарии:
1. Niiiice! Спасибо! Это именно то, что я искал 🙂