28

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

4

3 回答 3

36

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

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)
于 2010-06-27T12:39:32.843 回答
1

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

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
于 2010-06-27T12:19:31.113 回答
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.
于 2018-02-07T14:06:31.850 回答