嵌套Java hashmap到嵌套Scala映射转换

时间:2015-07-01 00:34:22

标签: scala

将Java中java.util.HashMap<java.lang.String, java.util.List<java.lang.String>>类型的变量转换为其Scala等效项的正确方法是什么:Map[Map[String, List[String]]]? (使用Scala MapStringList

我尝试使用import scala.collection.JavaConverters._并执行JavaNestedMap.asScala,但失败了。有没有一种聪明的方法(而不是有两个map)?

1 个答案:

答案 0 :(得分: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后跟。