代码之家  ›  专栏  ›  技术社区  ›  IttayD

将java.util.Map[String,Object]转换为scala.collection.immutable.Map[String,Any]

  •  27
  • IttayD  · 技术社区  · 16 年前

    如何将java.util.Map[String,Object]转换为scala.collection.immutable.Map[String,Any],以便将原始映射中的所有值(整数、布尔值等)转换为正确的值,以便在scala中正常工作。

    3 回复  |  直到 15 年前
        1
  •  36
  •   Michel Krämer    16 年前

    正如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
  •  1
  •   VonC    16 年前

    这个 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
    
        3
  •  1
  •   Dinesh Shinkar    8 年前

    为了将java.util.Map[String,Object]转换为scala.collection.immutable.Map[String,Object],您需要在scala项目中简单地导入下面的语句并清理生成。

    import collection.JavaConversions._
    

    参考以下代码:

    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.
    
    推荐文章