天天看點

Java和scala集合互相轉換

使用 scala.collection.JavaConverters 與Java集合互動。它有一系列的隐式轉換,添加了asJava和asScala的轉換方法。

import scala.collection.JavaConverters._
 
 val list: java.util.List[Int] = List(1,2,3,4).asJava
 val buffer: scala.collection.mutable.Buffer[Int] = list.asScala
           

以下集合可以進行任意,轉換。但在某些情況下引入的隐式轉換不正确或未引入,仍然無法進行正确轉換,如API的例子

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.concurrent.Map <=> java.util.concurrent.ConcurrentMap

總結下來就是:collection:可以指定元素排序規則:sort方法或繼承comparable

scala.collection.Iterable<=>java.lang.{iterable,collection}

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

scala的Buffer對應就是java.util.List,不可直接使用,使用ListBuffer

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

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

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

并發安全集合

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

以下為scala.collection.mutable.ListBuffer<=>java.util.List

除要求引入相應的轉換類JavaConversions._,還有引入ListBuffer=>java.util.List 具體轉換方法