2013-07-23 66 views

回答

2

在Scala收集包中使用轉換器方法。這是一個示例演示如何轉換:如弗拉基米爾Matveev提到

wantedList=oldList.map(_.asScala) 
+3

總的方向(JavaConverters的用法)是正確的,但是你必須通過'asScala'列表映射整個列表,而不僅僅是在列表中調用這個方法:'oldList.map(_ .asScala)' –

0

你可以使用scala.collection.JavaConversions靜態方法

import scala.collection.JavaConverters._ 

oldList: List[java.util.Map[String,String]] 

wantedList= oldList.asScala 

編輯。這一次從標準的Java集合增加了隱式轉換,並允許您執行這樣的事情(假設我們已經打開REPL和進口scala.collection.JavaConversions._):

scala > x 
res1: java.util.HashMap[String,String] = {1=2} 

scala> x.toMap 
res2: scala.collection.immutable.Map[String,String] = Map(1 -> 2) 

你可以解決您的具體問題如下:

res5: list: List[java.util.HashMap[String, String]] =() 
scala > list.map(e => e.toMap) 
res6: List[scala.collection.immutable.Map[String,String]] =() 
0

自從Scala 2.9.0棄用JavaConverters並在Scala 2.11-M1中刪除後,您不應該使用它們。相反,有一個包scala.collection.convert與模塊WrapAsScala。它有一個隱式轉換dictionaryAsScalaMap

+0

有一些'JavaConverters'成員已被棄用,但一般情況下'JavaConverters'不被棄用。 – sourcedelica

+0

@sourcedelica [JavaConverters](https://github.com/scala/scala/blob/v2.10.0/src/library/scala/collection/JavaConverters.scala),你可以看到所有成員都被棄用 – 4lex1v

+0

那些內部成員是不推薦使用,但它從'DecorateAsJava'和'DecorateAsScala'繼承的所有內容都不是。 JavaConverters''對象本身不是,'import JavaConverters._'仍然可以像以前一樣工作。例如。你可以做'jmap.asScala'。 – sourcedelica

相關問題