将 java.util.Map[String, Object] 转换为 scala.collection.immutable.Map[String, Any]

2022-09-01 14:27:32

如何将java.util.Map[String,Object]转换为scala.collection.immutable.Map[String,Any],以便原始映射中的所有值(整数,布尔值等)都转换为正确的值,以便在Scala中正常工作。


答案 1

正如VonC所说,仅支持可变集合,但您不必使用单独的库。可变集合派生自,它定义了返回不可变 Map 的方法:scala.collections.JavaConversionTraversableOncetoMap

import scala.collection.JavaConversions._

val m = new java.util.HashMap[String, Object]()
m.put("Foo", java.lang.Boolean.TRUE)
m.put("Bar", java.lang.Integer.valueOf(1))

val m2: Map[String, Any] = m.toMap
println(m2)

这将输出

Map(Foo -> true, Bar -> 1)

答案 2

Scala2.8 的 JavaConversions 包只处理可变集合。

scalaj-collection库可能在这方面有所帮助。

java.util.Map[A, B]       #asScala: scala.collection.Map[A, B]
                          #asScalaMutable: scala.collection.mutable.Map[A, B]
                          #foreach(((A, B)) => Unit): Unit

推荐