Как я преобразовываю java.util. Карта [Строка, Объект] к scala.collection.immutable. Карта [Строка, Любой], так, чтобы все значения в исходной карте (целые числа, булевские переменные и т.д.) были преобразованы в правильное значение для работы хорошо в Scala.
Как говорит VonC, scala.collections.JavaConversion
поддерживает только изменяемые коллекции, но у вас их нет использовать отдельную библиотеку. Изменяемые коллекции получены из TraversableOnce
, который определяет метод 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
в Scala2.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