如何在 Scala 2.8.1 中将 java.util.Set[String] 转换为具有泛型类型的 scala.collection.Set?
import scala.collection.JavaConversions._
var in : java.util.Set[String] = new java.util.HashSet[String]()
in.add("Oscar")
in.add("Hugo")
val out : scala.collection.immutable.Set[String] = Set(in.toArray : _*)
这是错误消息
<console>:9: error: type mismatch;
found : Array[java.lang.Object]
required: Array[_ <: String]
val out : scala.collection.immutable.Set[String] = Set(javaset.toArray : _*)
我做错了什么?
使用 JavaConverters 代替
import scala.collection.JavaConverters._
val out = in.asScala
out: scala.collection.mutable.Set[String] = Set(Hugo, Oscar)
toArray()
上调用
Set
将返回 Object
数组。由于您已经导入了 JavaConversions
,因此 asScalaSet
会隐式地将您的 Java 集转换为可变的 Scala 集,或使用 toSet
将其转换为不可变集。
这是一个过时的答案。需要导入
import scala.jdk.CollectionConverters.*
所示
然后根据目标集合类型使用
.asScala
或.asJava
方法。