2015-07-01 152 views
0

什么是java.util.HashMap<java.lang.String, java.util.List<java.lang.String>>类型的变量转换在Java中,它相当于斯卡拉的正确方法:Map[Map[String, List[String]]]? (使用Scala MapStringList嵌套的Java HashMap来嵌套斯卡拉地图转换

我试图用import scala.collection.JavaConverters._JavaNestedMap.asScala,但失败了。有没有这样做的巧妙方式(而不是有两个map)?

回答

2

我知道没有单一的呼叫方式。

这是简洁的低效可能在一个热循环。配置文件,如果它最终太慢,然后你想直接使用建设者。

val in: JMap[JMap[String, String]] = ??? 
val out: Map[Map[String, String]] = in.asScala.mapValues(_.asScala) 
val again: JMap[JMap[String, String]] = out.map(_.asJava).asJava 

值得一提的是,.asScala为您提供了与Java地图一致性一个可变的地图。如果您想要获得不可变的地图,则需要拨打.toMap后缀。

+0

感谢您的评论。尽管我认为最好写下如下这样的最后两个步骤: 'in.asScala.map {item =>(item._1,item._2.asScala.toMap)} .toMap'。 toMap是将其转换为Scala的不可变映射。 – Daniel