Scala中嵌套Map扁平化转换为三元组List的高效实现方法
实现方案
你原本的思路方向是对的,不需要单独定义辅助函数,直接内联逻辑即可,有两种常用的简洁写法:
1. 推荐写法:for推导式(可读性更高)
for推导式是Scala专门为嵌套遍历场景设计的语法糖,逻辑清晰易读,新手也能快速理解:
val resultList = (for { (aKey, innerMap) <- someMap (bKey, cValue) <- innerMap } yield (aKey, bKey, cValue)).toList
2. flatMap+map组合写法(和你原思路匹配)
直接把你原本的辅助函数逻辑内联到flatMap的参数里,不需要额外定义函数:
val resultList = someMap.flatMap { case (aKey, innerMap) => innerMap.map { case (bKey, cValue) => (aKey, bKey, cValue) } }.toList
补充说明
你原来写的辅助函数存在返回类型标注错误的问题:你标注的返回值是(String,String,String),但实际map操作返回的是Iterable[(String,String,String)],编译会直接报错,内联逻辑可以避免这类不必要的类型声明问题。
上述两种写法执行效率完全一致,底层都是两次遍历嵌套Map,没有额外性能开销。
内容的提问来源于stack exchange,提问作者jeb2
相关产品推荐
相关产品推荐

