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

uwopmtnx  于 12个月前  发布在  Scala
关注(0)|答案(3)|浏览(248)

在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 : _*)


我做错了什么?

4ioopgfo

4ioopgfo1#

使用JavaConverters代替

import scala.collection.JavaConverters._

val out = in.asScala

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

字符串

fcg9iug3

fcg9iug32#

在java Set上调用toArray()将返回一个Object数组。由于您已经导入了JavaConversionsasScalaSet将隐式地将Java集合转换为可变的Scala集合,或者使用toSet将其转换为不可变的集合。
参见Convert Scala Set into Java (java.util.Set)

5anewei6

5anewei63#

那是个过时的答案,人们需要进口

import scala.jdk.CollectionConverters.*

字符串
https://docs.scala-lang.org/overviews/collections-2.13/conversions-between-java-and-scala-collections.html所示
然后根据目标集合类型使用.asScala.asJava方法。

相关问题