преобразовать java.util.Map [String, Object] в scala.collection.immutable.Map [String, Any] - PullRequest
27 голосов
/ 27 июня 2010

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

Ответы [ 3 ]

35 голосов
/ 27 июня 2010

Как говорит 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)
1 голос
/ 07 февраля 2018

Чтобы преобразовать преобразование java.util.Map [String, Object] в scala.collection.immutable.Map [String, Object], вам нужно просто импортировать приведенный ниже оператор в Scala Project и выполнить чистую сборку.1002 *

См. Ниже код:

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.
1 голос
/ 27 июня 2010

Пакет 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
...