Scala中集合类型与java中集合类型转换

对于java中的集合元素并不能在scala中拿来就用的,需要进行相应的转换。

1. 转换规则如下

从下面可以看出,有些可以相互转换的,有些只能单向转换:

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]

 

2. 转换操作步骤

1) 导入包 import scala.collection.JavaConverters._

2) 添加 .asScala或 .asJava

 

 3. 测试案例

以下为java.util.List 和scala 中 Seq的相互转换:

   def main(args: Array[String]): Unit = {

        val list:java.util.List[Int] = scala2java
        println("")
        java2scala(list)
    }

    //测试Java中List转Scala中Seq
    def scala2java:java.util.List[Int] = {
        import scala.collection.JavaConverters._
        println("scala2java")
        val list = Seq(1,2,3,4).asJava

        //循环输出显示
        var x = 0
        for(x <- Range(0,list.size)){
            print(list.get(x) + ",")
        }
        list
    }

    //测试Java中List转Scala中Seq
    def java2scala(list:java.util.List[Int]) = {
        import scala.collection.JavaConverters._
        println("java2scala")
        val buffer:scala.collection.mutable.Buffer[Int] = list.asScala

        //循环输出显示
        buffer.foreach(x=> print(x + ","))
    }

 显示输出结果:

 

posted @ 2018-01-04 19:13  硅谷工具人  阅读(4612)  评论(0编辑  收藏  举报
成功之道,在于每个人生阶段都要有不同的目标,并且通过努力实现自己的目标,毕竟人生不过百年! 所有奋斗的意义在于为个人目标实现和提升家庭幸福,同时能推进社会进步和国家目标! 正如古人讲的正心诚意格物致知,修身齐家治国平天下。