簡體   English   中英

如何將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 [字符串]

代替

java.util.List [String] = [a,b,c]

返回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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM