Подтвердить что ты не робот

Конвертировать java.util.Map [String, Object] в scala.collection.immutable.Map [String, Any]

Как преобразовать java.util.Map [String, Object] в scala.collection.immutable.Map [String, Any], чтобы все значения в исходной карте (целые числа, булевы и т.д.) были преобразованы для правильного значения, чтобы хорошо работать в scala.

4b9b3361

Ответ 1

Как говорит 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)

Ответ 2

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