Scala将Seq [Object]转换为Map [String,Map [String,String]]

时间:2017-04-10 22:30:47

标签: scala

我是Scala的新手,所以我对地图有点争吵。

我有

val items = Seq[MyModel]

其中MyModel(来自Java)包含getLang,getName和getMessage方法。

现在我需要填写

var loadedMessagesMap: Map[String, Map[String, String]] = ListMap.empty

包含按结构中的lang分组的值:lang - > (姓名 - >消息)。名称属性是唯一的。 谢谢。

2 个答案:

答案 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

我希望这会对你有所帮助。