如何将 Scala List 转换为 Java ArrayList
How to convert Scala List to Java ArrayList
我正在使用需要 ArrayList 作为参数的 Java API。现在在 Scala 中,我有一个 List[String]。如何在 Scala 中将 List[String] 转换为 ArrayList?
我试过了:
import scala.collection.JavaConverters._
val scalaList = List("a","b","c")
scalaList.asJava
结果是:
java.util.List[String] = [a, b, c]
以上不起作用,因为我希望结果是
java.util.ArrayList[String]
而不是
java.util.List[String] = [a, b, c]
return java.util.List[T]
是一个 java 接口并且可以有 ArrayList[T]
或 LinkedList[T]
作为实现。
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
res22: java.util.List[Int] = [1, 2, 3]
我觉得需要自己转成ArrayList[T]
或者LinkedList[T]
什么的
我能想到的一种方法是
scala> new java.util.ArrayList[Int](scalaList.asJava)
res27: java.util.ArrayList[Int] = [1, 2, 3]
或
scala> new java.util.LinkedList[Int](scalaList.asJava)
res28: java.util.LinkedList[Int] = [1, 2, 3]
更好的版本是
scala> def toArrayList[T](input: List[T]): java.util.ArrayList[T] = new java.util.ArrayList[T](input.asJava)
toArrayList: [T](input: List[T])java.util.ArrayList[T]
scala> toArrayList(List(1000, 2000, 3000))
res33: java.util.ArrayList[Int] = [1000, 2000, 3000]
最好的版本是,写隐式方法
class AsArrayList[T](input: List[T]) {
def asArrayList : java.util.ArrayList[T] = new java.util.ArrayList[T](input.asJava)
}
implicit def asArrayList[T](input: List[T]) = new AsArrayList[T](input)
List(1000, 2000, 3000).asArrayList
我正在使用需要 ArrayList 作为参数的 Java API。现在在 Scala 中,我有一个 List[String]。如何在 Scala 中将 List[String] 转换为 ArrayList?
我试过了:
import scala.collection.JavaConverters._
val scalaList = List("a","b","c")
scalaList.asJava
结果是:
java.util.List[String] = [a, b, c]
以上不起作用,因为我希望结果是
java.util.ArrayList[String]
而不是
java.util.List[String] = [a, b, c]
return java.util.List[T]
是一个 java 接口并且可以有 ArrayList[T]
或 LinkedList[T]
作为实现。
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
res22: java.util.List[Int] = [1, 2, 3]
我觉得需要自己转成ArrayList[T]
或者LinkedList[T]
什么的
我能想到的一种方法是
scala> new java.util.ArrayList[Int](scalaList.asJava)
res27: java.util.ArrayList[Int] = [1, 2, 3]
或
scala> new java.util.LinkedList[Int](scalaList.asJava)
res28: java.util.LinkedList[Int] = [1, 2, 3]
更好的版本是
scala> def toArrayList[T](input: List[T]): java.util.ArrayList[T] = new java.util.ArrayList[T](input.asJava)
toArrayList: [T](input: List[T])java.util.ArrayList[T]
scala> toArrayList(List(1000, 2000, 3000))
res33: java.util.ArrayList[Int] = [1000, 2000, 3000]
最好的版本是,写隐式方法
class AsArrayList[T](input: List[T]) {
def asArrayList : java.util.ArrayList[T] = new java.util.ArrayList[T](input.asJava)
}
implicit def asArrayList[T](input: List[T]) = new AsArrayList[T](input)
List(1000, 2000, 3000).asArrayList