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
相关产品推荐
相关产品推荐

