[英]Scala convert Seq[Object] to Map[String, Map[String, String]]
I am new to Scala so I am a bit fighting with maps. 我是Scala的新手,所以我有点想与地图作战。
I have 我有
val items = Seq[MyModel]
where MyModel (came from Java) contains getLang, getName and getMessage methods. 其中MyModel(来自Java)包含getLang,getName和getMessage方法。
Now I need to fill up the 现在我需要填写
var loadedMessagesMap: Map[String, Map[String, String]] = ListMap.empty
to contain values grouped by lang in structure: lang -> (name -> message). 在结构中包含按lang分组的值:lang->(名称-> message)。 Name property is unique. 名称属性是唯一的。 Thank you. 谢谢。
Maybe this will help you: 也许这会帮助您:
val result: Map[String, Map[String, Seq[String]]] = items.groupBy(_.getLang).map {
case(lang, models) =>
lang -> models.groupBy(_.getName).mapValues(_.map(_.getMessage))
}
It returns a Seq[String]
because there might be several messages for the same language and name. 它返回一个Seq[String]
因为相同的语言和名称可能会有多个消息。 Not sure how you want to handle that case. 不确定您要如何处理这种情况。
This should do the trick: 这应该可以解决问题:
val models: Seq[MyModel] = ???
val mapped = models.map { model =>
model.getLang -> Map(model.getName -> model.getMessage)
}.toMap
I hope this helps you. 我希望这可以帮助你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.