将 Java 集合转换为 Scala 集合

2022-08-31 11:18:58

与Stack Overflow问题Scala相关的,相当于新的HashSet(Collection),如何将Java集合(比如说)转换为Scala集合?java.util.ListList

我实际上正在尝试将Java API调用转换为Spring的,它返回一个,变成一个Scala不可变的。例如:SimpleJdbcTemplatejava.util.List<T>HashSet

val l: java.util.List[String] = javaApi.query( ... )
val s: HashSet[String] = //make a set from l

这似乎有效。欢迎批评!

import scala.collection.immutable.Set
import scala.collection.jcl.Buffer 
val s: scala.collection.Set[String] =
                      Set(Buffer(javaApi.query( ... ) ) : _ *)

答案 1

供将来参考:在Scala 2.8中,它可以像这样完成:

import scala.collection.JavaConversions._
val list = new java.util.ArrayList[String]()
list.add("test")
val set = list.toSet

set是一个之后。scala.collection.immutable.Set[String]

另请参阅Ben James的答案以获取更明确的方式(使用JavaConverters),现在似乎推荐使用。


答案 2

如果你想比robinst的答案中演示的JavaConversions更明确,你可以使用JavaConverters:

import scala.collection.JavaConverters._
val l = new java.util.ArrayList[java.lang.String]
val s = l.asScala.toSet

推荐