我是Scala的新手,所以我对地图有点争吵。
我有
val items = Seq[MyModel]
其中MyModel(来自Java)包含getLang,getName和getMessage方法。
现在我需要填写
var loadedMessagesMap: Map[String, Map[String, String]] = ListMap.empty
包含按结构中的lang分组的值:lang - > (姓名 - >消息)。名称属性是唯一的。 谢谢。
答案 0 :(得分:2)
也许这会对你有所帮助:
val result: Map[String, Map[String, Seq[String]]] = items.groupBy(_.getLang).map {
case(lang, models) =>
lang -> models.groupBy(_.getName).mapValues(_.map(_.getMessage))
}
它返回Seq[String]
,因为可能有多条消息用于相同的语言和名称。不知道你想如何处理这种情况。
答案 1 :(得分:0)
这应该可以解决问题:
val models: Seq[MyModel] = ???
val mapped = models.map { model =>
model.getLang -> Map(model.getName -> model.getMessage)
}.toMap
我希望这会对你有所帮助。