加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

将java.util.HashMap转换为java中的scala.collection.immutable.

发布时间:2020-12-14 05:12:31 所属栏目:Java 来源:网络整理
导读:我从我的 Java代码使用了一些Scala库.我有一个集合的问题.我需要传递scala.collection.immutable.Map作为方法的参数.我可以从我的Java代码转换或构建immutable.Map,但是我不知道该怎么做.建议? 解决方法 完全可以在Java代码中使用JavaConverters – 只需要
我从我的 Java代码使用了一些Scala库.我有一个集合的问题.我需要传递scala.collection.immutable.Map作为方法的参数.我可以从我的Java代码转换或构建immutable.Map,但是我不知道该怎么做.建议?

解决方法

完全可以在Java代码中使用JavaConverters – 只需要几个额外的跳转来跳过:
import java.util.HashMap;
import scala.Predef;
import scala.Tuple2;
import scala.collection.JavaConverters;
import scala.collection.immutable.Map;

public class ToScalaExample {
  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> example() {
    HashMap<String,String> m = new HashMap<String,String>();
    m.put("a","A");
    m.put("b","B");
    m.put("c","C");
    return m;
  }
}

我们可以证明这样做从Scala REPL:

scala> val jm: java.util.HashMap[String,String] = ToScalaExample.example
jm: java.util.HashMap[String,String] = {b=B,c=C,a=A}

scala> val sm: Map[String,String] = ToScalaExample.toScalaMap(jm)
sm: Map[String,String] = Map(b -> B,c -> C,a -> A)

但是,您当然可以从Java代码轻松地调用这些方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读