java与scala集合相互转换

参考scala官网:

   http://www.scala-lang.org/api/current/index.html#scala.collection.JavaConverters$

可以得出如下的转换对应关系:

scala.collection.Iterable <=> Java.lang.Iterable

scala.collection.Iterable <=> java.util.Collection

scala.collection.Iterator <=> java.util.{ Iterator, Enumeration }

scala.collection.mutable.Buffer <=> java.util.List

scala.collection.mutable.Set <=> java.util.Set

scala.collection.mutable.Map <=> java.util.{ Map, Dictionary }

scala.collection.mutable.ConcurrentMap <=> java.util.concurrent.ConcurrentMap


scala.collection.Seq         => java.util.List

scala.collection.mutable.Seq => java.util.List

scala.collection.Set         => java.util.Set

scala.collection.Map         => java.util.Map

java.util.Properties         => scala.collection.mutable.Map[String, String]


当然这些转换均需要在scala文件中引入,scala.collection.JavaConversions._  
1、
SCALA => JAVA 的转换情景一般发生在,在SCALA中调用JAVA类中的方法。如下代码:
public static void testSet(Set<Integer> set){
        for(Integer s : set){
            System.out.println(s);
        }
}
Scala中调用
var set = Set[Integer](1, 2, 3, 4)
CollectionsTest.testSet(set)
这时候就会发送 scala set => java set 的隐式转换。

2、
JAVA => SCALA 一般发生在,在SCALA中使用JAVA中的集合对象。
Java代码如下,
    public static List<String> list;
    
    static{
        list = new ArrayList<>();
        list.add("list1");
        list.add("list2");
        list.add("list3");
}
在Scala中调用
val test : Iterable[String] = CollectionsTest.iterable


3、测试在JAVA文件调用Scala
在使用JAVA进行机器学习时任务,比如word2Vec中word2Vec.fit(tokens)返回结果如果想要查看,发现是scala.collection.multable.Set[String,float[]]类型,此时调用对象,引入
scala.collection.JavaConversions.*  是没有作用的,猜想可能与scala本身的隐式转换机制有关系。故而对于Set的使用,参看如下代码:
scala代码
 var set = Set[Integer](1, 2, 3, 4)
java 代码
    public static Iterable<String> iterable;
    static{
        Set<String> sets = new HashSet<String>();
        sets.add("sets1");
        sets.add("sets2");
        sets.add("sets3");
        iterable = sets;
    }


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值