将java.util.Map 转换为scala.collection.immutable.Map

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

正如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) 

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 

为了将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.