You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何将ArrayList<HashMap<K,V>>转换为List<MapValuesClass>

解决方法

首先明确:你要的是把嵌套在ArrayList的HashMap里的所有MapValuesClass值,提取出来拼成一个单一的List<MapValuesClass>,那flatMap其实就是正确的工具,你觉得它丢失分组可能是对flatMap的作用理解有偏差,或者输入结构和预期不符。

正确代码实现

假设你的输入是ArrayList<HashMap<*, MapValuesClass>>类型,直接用下面的代码就能得到目标列表:

// 示例输入
val arrayListOfHashmaps = arrayListOf(
    hashMapOf("key1" to MapValuesClass("value1", 1, 1.0)),
    hashMapOf("key2" to MapValuesClass("value2", 2, 2.0)),
    hashMapOf("key3" to MapValuesClass("value3", 3, 3.0))
)

// 转换得到期望的列表
val result: List<MapValuesClass> = arrayListOfHashmaps.flatMap { it.values }

关于“丢失分组”的澄清

如果你的每个HashMap里包含多个MapValuesClass实例,且你想保留每个HashMap对应的一组值(也就是得到List<List<MapValuesClass>>这种嵌套列表),那应该用map代替flatMap:

// 保留每个HashMap的分组,生成嵌套列表
val groupedList: List<List<MapValuesClass>> = arrayListOfHashmaps.map { it.values.toList() }

但根据你给出的desired结果,显然是要平铺的单一列表,那flatMap { it.values }完全符合需求——因为HashMap.values()返回的是Collection<MapValuesClass>,flatMap会把每个Collection里的元素逐个提取出来,合并成一个大列表,最终结果和你给出的desired完全一致。

内容的提问来源于stack exchange,提问作者mars8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:25:18