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

Kotlin中Map<Int,List<String>>转List<Pair<Int,String>>的非forEach单行实现

解决方案:Kotlin中Map<Int,List<String>>转List<Pair<Int,String>>的优雅实现

当然可行!Kotlin的标准库天生就适合这种集合转换场景,完全不需要依赖forEach,一行代码就能搞定,风格还特别符合函数式编程的优雅感。

核心实现代码

最直接的方案是利用flatMap操作符,它专门用来处理“把每个元素展开为多个元素再合并”的需求,完美匹配你的场景:

// 示例输入Map
val inputMap: Map<Int, List<String>> = mapOf(
    1 to listOf("apple", "banana"),
    2 to listOf("cherry", "date")
)

// 转换逻辑(可单行书写)
val resultList: List<Pair<Int, String>> = inputMap.flatMap { (key, values) -> values.map { key to it } }

代码逻辑说明

  • flatMap会迭代Map中的每一个Entry<Int, List<String>>;
  • 对每个Entry,我们用map把列表里的每个String和对应的key组合成Pair<Int, String>;
  • flatMap会自动把所有这些小的Pair列表合并成一个完整的大List,省去了手动拼接的麻烦。

极致简洁的单行写法

如果追求更紧凑的代码,还可以简化变量名,写成一行:

val resultList = inputMap.flatMap { (k, vs) -> vs.map { k to it } }

这种写法完全符合你想要的“优雅、无forEach”的要求,也是Kotlin开发者处理这类集合转换的惯用写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:19:56