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

时间:2010-06-27 11:46:21

标签: java scala scala-collections

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

3 个答案:

答案 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.