如何将java.util.Set [String]转换为Scala 2.8.1中具有泛型类型的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 : _*)
Run Code Online (Sandbox Code Playgroud)
这是错误信息
<console>:9: error: type mismatch;
found : Array[java.lang.Object]
required: Array[_ <: String]
val out : scala.collection.immutable.Set[String] = Set(javaset.toArray : _*)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
olu*_*ies 22
使用JavaConverters代替
import scala.collection.JavaConverters._
val out = in.asScala
out: scala.collection.mutable.Set[String] = Set(Hugo, Oscar)
Run Code Online (Sandbox Code Playgroud)
Mar*_*ela 15
toArray()调用java Set将返回一个数组Object.由于您已导入JavaConversions,因此asScalaSet将隐式将Java集转换为可变Scala集或用于toSet将其转换为不可变集.
另请参见将Scala Set转换为Java(java.util.Set)