【问题标题】:How to convert a java HashMap to immutable Scala map via java code?如何通过 java 代码将 java HashMap 转换为不可变的 Scala 映射?
【发布时间】:2016-03-15 07:02:03
【问题描述】:

我需要创建一个scala.collection.immutable.Map,但我不能使用 Scala 代码,我必须使用 Java。是怎么做到的?

我不是在寻找空地图,我想将现有的 Java 地图转换为不可变的 Scala 地图。

【问题讨论】:

    标签: java scala scala-2.10


    【解决方案1】:

    您可以使用JavaConverters 来执行此操作

    import java.util.HashMap;
    import scala.Predef;
    import scala.Tuple2;
    import scala.collection.JavaConverters;
    import scala.collection.immutable.Map;
    
    public class ToScalaTest {
      public static <A, B> Map<A, B> toScalaMap(HashMap<A, B> m) {
        return JavaConverters.mapAsScalaMapConverter(m).asScala().toMap(
          Predef.<Tuple2<A, B>>conforms()
        );
      }
    
      public static HashMap<String, String> test() {
        HashMap<String, String> m = new HashMap<String, String>();
        m.put("a", "Stackoverflow");
        return m;
      }
    }
    

    我们可以证明这在 Scala REPL 中有效

    scala> val jm: java.util.HashMap[String, String] = ToScalaTest.test
    jm: java.util.HashMap[String,String] = {a=Stackoverflow}
    
    scala> val sm: Map[String, String] = ToScalaTest.toScalaMap(jm)
    sm: Map[String,String] = Map(a -> Stackoverflow)
    

    您当然可以从 java 代码中轻松调用此方法

    【讨论】:

    • 抱歉,我错过了.toMap之前的.asScala()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 2013-05-30
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    相关资源
    最近更新 更多