【发布时间】:2022-01-23 01:10:33
【问题描述】:
我在 kotlin 中有多个不同的数据类,它们以完全相同的长度保存在额外的列表中。现在我想将它们组合成一个结果列表,其中包含它们作为具有相同长度(1000 个条目)的映射。我尝试了一个 for 循环和一个预填充的映射列表,但这对我来说看起来有点乱,所以我问自己是否有更清洁的方法来做到这一点,尤其是使用 kotlin。
data class One(
val a: Double,
val b: Double,
var c: Double
)
data class Two(
val d: Double,
val e: Double,
)
fun main() {
val oneList: List<One> = listOf(One(1.0, 0.0, 2.0), One(3.0, 5.0, 10.0))
val twoList: List<Two> = listOf(Two(5.0, 2.0), Two(7.0, 1.0))
val results: List<MutableMap<String,Double>> = (0..1).map{ mutableMapOf() }
for(i in 0 .. 1){
results[i]["a"] = oneList[i].a
results[i]["b"] = oneList[i].b
results[i]["c"] = oneList[i].c
results[i]["d"] = twoList[i].d
results[i]["e"] = twoList[i].e
}
}
问题是,我有大约 10 个类,每个对象中有大约 2-3 个成员,因此代码大约有 30 多行......结果应该如下所示:
[
{
a: 1.0,
b: 0.0,
c: 2.0,
d: 5.0,
e: 2.0
},
{
a: 3.0,
b: 5.0,
c: 10.0,
d: 7.0,
e: 1.0
}
]
【问题讨论】:
-
我尝试了不同的方法:按索引分组、减少或折叠、使用 kotlin 反射或将对象转换为地图并将它们添加在一起。最后一种方法似乎是最好的解决方案。