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

 顯示輸出結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM