在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 : _*)
型
我做错了什么?
3条答案
按热度按时间4ioopgfo1#
使用JavaConverters代替
字符串
fcg9iug32#
在java
Set
上调用toArray()
将返回一个Object
数组。由于您已经导入了JavaConversions
,asScalaSet
将隐式地将Java集合转换为可变的Scala集合,或者使用toSet
将其转换为不可变的集合。参见Convert Scala Set into Java (java.util.Set)
5anewei63#
那是个过时的答案,人们需要进口
字符串
如https://docs.scala-lang.org/overviews/collections-2.13/conversions-between-java-and-scala-collections.html所示
然后根据目标集合类型使用
.asScala
或.asJava
方法。