zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

JAVAscala集合 类型 类型转换
2023-09-14 08:57:20 时间

对于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 + ","))
    }

 显示输出结果: