如何将List [java.util.Map]转换为List [Map]

时间:2013-07-23 05:39:38

标签: scala scala-collections scala-java-interop

如何在Scala中将List [java.util.Map]转换为List [Map]?

oldList:

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

wantList:

List[Map[String,String]]

我应该新建一个List [Map]并循环oldList吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

在Scala集合包中使用转换器方法。这是一个演示如何转换的示例:

import scala.collection.JavaConverters._

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

wantedList= oldList.asScala

<强>编辑:

弗拉基米尔·马特维耶夫提到

wantedList=oldList.map(_.asScala)

答案 1 :(得分:0)

您可以使用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]] = ()

答案 2 :(得分:0)

JavaConverters自Scala 2.9.0以来已被弃用,并已在Scala 2.11-M1 中删除,您不应使用它们。相反,有一个包scala.collection.convert的模块WrapAsScala。它有一个隐式转换dictionaryAsScalaMap