我有一个案例类
case class Router(routerId: String, modelInfo: List[Map[String,String]])
我想将其转换为Tuple3(routerId,pinModel,color)
modelInfo = List [Map [pinModel,color]]
例如,如果我有一个Router对象:
val router = Router("123", List(Map("pinModel1"-> "Red", "pinModel2"-> "Black", "pinModel3"-> "Yellow")))
我希望输出为:
val routers = List(("123","pinModel1","Red"),("123","pinModel2","Black"),("123","pinModel3","Yellow"))
我可以实现它的一种方法是获取Router.modelInfo列表并创建那么多的Router实例。但是,我认为必须有一个更清洁的解决方案。
有什么建议吗?
答案 0 :(得分:1)
也许:
val routers =
router.modelInfo.flatMap(_.map { case (key, value) => (router.routerId, key, value)})
哪个收益率:
(123,pinModel1,Red)
(123,pinModel2,Black)
(123,pinModel3,Yellow)
答案 1 :(得分:1)
for {
m <- router.modelInfo
(k, v) <- m
} yield (router.routerId, k, v)
(这与刚出现的Yuval解决方案完全相同。)