我有一个(简化的)表结构,定义如下:
data class Column<T>(val name: String, val value: T)
data class Row(val data: List<Column<*>>)
data class Grid(val rows: List<Row>)我现在想要计算该网格中每一列的总数,即每行的第i个元素需要累加。
发布于 2018-08-06 19:03:52
我的解决方案如下所示。我只是简单地对数据进行求和,并根据列名对列值进行分组,然后将列名与相应的flatMap进行fold。
private fun calculateTotals(data: Grid) = data.rows
.flatMap(Row::data)
.groupingBy(Column<*>::name)
.fold(0.0) { accumulator, (_, value) ->
accumulator + when (value) {
is Number -> value.toDouble()
else -> 0.0
}
}https://stackoverflow.com/questions/51706119
复制相似问题