convert java.util.Map[String, Object] to scala.col

2019-02-07 18:00发布

How do I convert java.util.Map[String, Object] to scala.collection.immutable.Map[String, Any], so that all values in the original map (integers, booleans etc.) are converted to the right value to work well in Scala.

3条回答
疯言疯语
2楼-- · 2019-02-07 18:50

In order to convert convert java.util.Map[String, Object] to scala.collection.immutable.Map[String,Object] , you need to simple import below statement in Scala Project and clean build.

import collection.JavaConversions._

Refer to below code:

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.
查看更多
Bombasti
3楼-- · 2019-02-07 18:56

As VonC says, scala.collections.JavaConversion supports mutable collections only, but you don't have to use a separate library. Mutable collections are derived from TraversableOnce which defines a toMap method that returns an immutable 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)

This will output

Map(Foo -> true, Bar -> 1)
查看更多
三岁会撩人
4楼-- · 2019-02-07 18:57

The JavaConversions package of Scala2.8 deals only with mutable collections.

The scalaj-collection library might help here.

java.util.Map[A, B]       #asScala: scala.collection.Map[A, B]
                          #asScalaMutable: scala.collection.mutable.Map[A, B]
                          #foreach(((A, B)) => Unit): Unit
查看更多
登录 后发表回答