Преобразование списка изменяемых файлов

#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! Спасибо! Это именно то, что я искал 🙂