【发布时间】:2021-09-06 09:27:30
【问题描述】:
我想使用 kotlin 中的 map、filter 和 reduce 函数计算一个值的平均值到一个集合中。
我是这样保存数据的:
data class Track(
val id:String,
var name: String,
var popularity: Int,
var duration: Int,
var explicit: Int,
var artist: String,
var idArtist: String,
var releaseDate: String,
var danceability: Float,
var energy: Float,
var key: Float,
var loudness: Float,
var mode: Float,
var speechness: Float,
var acousticness: Float,
var instrumentalness: Float,
var liveness: Float,
var valence: Float,
var tempo: Float,
var timeSignature: Float
)
我以这种方式按年份对数据进行分组:
fun group_tracks_by_year(tracks: MutableList<Track>): Map<String, List<Track>> {
val grouped_tracks = tracks.groupBy { it.releaseDate.split('-')[0] }.toSortedMap()
return grouped_tracks
}
例如,我想计算每年的平均节奏,我试图用map function 操作地图集合Map<String, List<Track>>,但我无法操作键值记录。
【问题讨论】:
-
尝试将问题分解为更简单的步骤。如果您已经将数字放在一个简单的数组中,您将如何计算它们的平均值?
-
谢谢。我想在不分解问题的情况下做到这一点。我知道用 rust、python 等其他语言解决同样的问题是可能的……所以我必须用 kotlin 做同样的事情。因此,解决方案可能会或非常简单,或者不可能
-
“我想在不分解问题的情况下这样做。”你为什么要不那样做???从字面上看,所有的编程都是将复杂的问题分解成小问题并解决这些问题......
标签: dictionary kotlin filter reduce