如何将java.util.Map [String,Object]转换为scala.collection.immutable.Map [String,Any],以便将原始地图中的所有值(整数,布尔等)转换为正确的价值在Scala中运作良好。
答案 0 :(得分:35)
正如VonC所说,scala.collections.JavaConversion
仅支持可变集合,但您不必使用单独的库。可变集合派生自TraversableOnce
,它定义了一个返回不可变Map的toMap
方法:
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)
答案 1 :(得分:1)
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
答案 2 :(得分:1)
为了将java.util.Map [String,Object]转换为scala.collection.immutable.Map [String,Object],您需要在Scala项目中简单导入以下语句并清理构建。
import collection.JavaConversions._
参考下面的代码:
var empMap= Map[String.Object]()
var emp= new Employee(empMap) // Employee is java POJO in which,passing scala map to overloaded constructor for setting default values.