对于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 + ","))
}
显示输出结果: