如何将scala.List转换为java.util.List?
如何将Scala的scala.List转换成Java的java.util.List ? 
Scala List和Java List是两个不同的怪物,因为前者是不可变的,后者是可变的。 所以,从一个到另一个,你首先必须将Scala List转换为一个可变的集合。
在斯卡拉2.7:
 import scala.collection.jcl.Conversions.unconvertList import scala.collection.jcl.ArrayList unconvertList(new ArrayList ++ List(1,2,3)) 
从Scala 2.8开始:
 import scala.collection.JavaConversions._ import scala.collection.mutable.ListBuffer asList(ListBuffer(List(1,2,3): _*)) val x: java.util.List[Int] = ListBuffer(List(1,2,3): _*) 
 但是,如果期望的types是Java List ,则该示例中的asList不是必需的,因为转换是隐式的,如最后一行所示。 
 不知道为什么这之前没有提到过,但我认为最直观的方法是直接在Scala列表中调用asJava装饰器方法: 
 scala> val scalaList = List(1,2,3) scalaList: List[Int] = List(1, 2, 3) scala> import scala.collection.JavaConverters._ import scala.collection.JavaConverters._ scala> scalaList.asJava res11: java.util.List[Int] = [1, 2, 3] 
总结以前的答案
 假设我们有以下List : 
 scala> val scalaList = List(1,2,3) scalaList: List[Int] = List(1, 2, 3) 
如果你想明确地 告诉你想要转换的内容:
 scala> import scala.collection.JavaConverters._ import scala.collection.JavaConverters._ scala> scalaList.asJava res11: java.util.List[Int] = [1, 2, 3] 
如果您不希望共同控制转换,并让编译器为您做隐式工作:
 scala> import scala.collection.JavaConversions._ import scala.collection.JavaConversions._ scala> val javaList: java.util.List[Int] = scalaList javaList: java.util.List[Int] = [1, 2, 3] 
这取决于你如何控制你的代码。
更新
与斯卡拉2.9.2:
 import scala.collection.JavaConversions._ import scala.collection.mutable.ListBuffer val x: java.util.List[Int] = ListBuffer( List( 1, 2, 3 ): _* ) 
结果
 [1, 2, 3] 
很老的问题,虽然我会回答,但大部分build议都被弃用。
 import scala.collection.JavaConversions.seqAsJavaList val myList = List("a", "b", "c") val myListAsJavaList = seqAsJavaList[String](myList) 
对于单个调用,手动执行可能是最简单的解决scheme:
 val slist = List (1, 2, 3, 4) val jl = new java.util.ArrayList [Integer] (slist.size) slist.foreach (jl.add (_)) 
我没有衡量performance。
就像上面提出的那样,即使在Java端也会产生不可变的列表。 我发现唯一的工作解决scheme是这样的:
 def toJList[T](l:List[T]):util.List[T] = { val a = new util.ArrayList[T] l.map(a.add(_)) a } 
由于Scala 2.12.0 JavaConversions已被弃用。
所以对我来说最简单的解决scheme是:
 java.util.Arrays.asList("a","b","c")