2015-07-01 151 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