如何在Scala中將List [java.util.Map]轉換爲List [Map]?如何將List [java.util.Map]轉換爲List [Map]
oldList:
List[java.util.Map[String,String]]
wantedList:
List[Map[String,String]]
我應新列表[地圖]和環路oldList?
的感謝!
如何在Scala中將List [java.util.Map]轉換爲List [Map]?如何將List [java.util.Map]轉換爲List [Map]
oldList:
List[java.util.Map[String,String]]
wantedList:
List[Map[String,String]]
我應新列表[地圖]和環路oldList?
的感謝!
在Scala收集包中使用轉換器方法。這是一個示例演示如何轉換:如弗拉基米爾Matveev提到
wantedList=oldList.map(_.asScala)
你可以使用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]] =()
自從Scala 2.9.0棄用JavaConverters並在Scala 2.11-M1中刪除後,您不應該使用它們。相反,有一個包scala.collection.convert
與模塊WrapAsScala
。它有一個隱式轉換dictionaryAsScalaMap
有一些'JavaConverters'成員已被棄用,但一般情況下'JavaConverters'不被棄用。 – sourcedelica
@sourcedelica [JavaConverters](https://github.com/scala/scala/blob/v2.10.0/src/library/scala/collection/JavaConverters.scala),你可以看到所有成員都被棄用 – 4lex1v
那些內部成員是不推薦使用,但它從'DecorateAsJava'和'DecorateAsScala'繼承的所有內容都不是。 JavaConverters''對象本身不是,'import JavaConverters._'仍然可以像以前一樣工作。例如。你可以做'jmap.asScala'。 – sourcedelica
總的方向(JavaConverters的用法)是正確的,但是你必須通過'asScala'列表映射整個列表,而不僅僅是在列表中調用這個方法:'oldList.map(_ .asScala)' –