convert java.util.Map[String, Object] to scala.collection.immutable.Map[String, Any]

后端 未结 3 1755
我寻月下人不归
我寻月下人不归 2021-01-01 10:10

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

相关标签:
3条回答
  • 2021-01-01 10:52

    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)
    
    0 讨论(0)
  • 2021-01-01 10:53

    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.
    
    0 讨论(0)
  • 2021-01-01 10:58

    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
    
    0 讨论(0)
提交回复
热议问题