将java.util.Set转换为scala.collection.Set

时间:2011-05-26 19:06:10

标签: scala set

如何将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 : _*)

这是错误消息

<console>:9: error: type mismatch;  
found   : Array[java.lang.Object]
required: Array[_ <: String]   
val out : scala.collection.immutable.Set[String] = Set(javaset.toArray : _*)

我做错了什么?

2 个答案:

答案 0 :(得分:19)

使用JavaConverters代替

import scala.collection.JavaConverters._

val out = in.asScala

out: scala.collection.mutable.Set[String] = Set(Hugo, Oscar)

答案 1 :(得分:15)

调用java Set

toArray()将返回Object的数组。由于您已导入JavaConversionsasScalaSet将隐式将您的Java集转换为可变Scala集,或使用toSet将其转换为不可变集。

另见Convert Scala Set into Java (java.util.Set)