2011-05-26 15 views
19

¿Cómo puedo convertir un java.util.Set [String] en un scala.collection.Set con un tipo genérico en Scala 2.8.1?Convierta java.util.Set en 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 : _*) 

Y este es el mensaje de error

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

¿Qué estoy haciendo mal?

Respuesta

15

toArray() llama en un java Set va a devolver una matriz de Object. Como ya importó JavaConversions, asScalaSet convertirá implícitamente su conjunto de Java a un conjunto de Scala mutable o usará toSet para convertirlo a un conjunto inmutable.

Ver también Convert Scala Set into Java (java.util.Set)

+0

Los leo, pero la función asSet no funciona. Con toSet funciona bien. Muchas gracias. – Twistleton

18

Uso JavaConverters lugar

import scala.collection.JavaConverters._ 

val out = in.asScala 

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

extraño, pero esta declaración de importación falla: scala.collection.JavaConverters._ importación utilizo Scala versión 2.8.1 – Twistleton

+0

JavaConverters está disponible Desde 2.8.1 – oluies

+0

Comprueba! ¡Tienes razón! – Twistleton