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

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

我究竟做错了什么?

toArray()调用一个java Set会返回一个Object数组。由于您已经导入了JavaConversions,asScalaSet会将您的Java集合隐式转换为可变的Scala集,或者使用toSet将其转换为不可变集。

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

http://stackoverflow.com/questions/6143747/convert-java-util-set-to-scala-collection-set

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:将java.util.Set转换为scala.collection.Set