如何在 Scala 中将 List[java.util.Map] 转换为 List[Map]?
旧列表:
List[java.util.Map[String,String]]
通缉名单:
List[Map[String,String]]
我应该新建一个 List[Map] 并循环 oldList 吗?
谢谢!
如何在 Scala 中将 List[java.util.Map] 转换为 List[Map]?
旧列表:
List[java.util.Map[String,String]]
通缉名单:
List[Map[String,String]]
我应该新建一个 List[Map] 并循环 oldList 吗?
谢谢!
在 Scala 集合包中使用转换器方法。这是一个演示如何转换的示例:
import scala.collection.JavaConverters._
oldList: List[java.util.Map[String,String]]
wantedList= oldList.asScala
编辑:
正如弗拉基米尔·马特维耶夫所说
wantedList=oldList.map(_.asScala)
您可以使用scala.collection.JavaConversions
静态方法。这个添加了来自标准 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]] = ()
JavaConverters 自 Scala 2.9.0 起已弃用,并在Scala 2.11-M1中删除, 您不应该使用它们。相反,有一个scala.collection.convert
带有模块的包WrapAsScala
。它有一个隐式转换dictionaryAsScalaMap