90 votes

Convertir une collection de Java en une collection de Scala

Liées à Débordement de Pile question Scala équivalent de new HashSet(Collection) , comment puis-je convertir une collection Java (java.util.List - dire) dans une collection Scala List?

Je suis en train d'essayer de convertir une API Java appel à du Printemps, SimpleJdbcTemplate, ce qui renvoie une java.util.List<T>, dans un Scala immuable HashSet. Ainsi, par exemple:

val l: java.util.List[String] = javaApi.query( ... )
val s: HashSet[String] = //make a set from l

Cela semble fonctionner. La critique est la bienvenue!

import scala.collection.immutable.Set
import scala.collection.jcl.Buffer 
val s: scala.collection.Set[String] =
                      Set(Buffer(javaApi.query( ... ) ) : _ *)

128voto

robinst Points 9249

Pour référence ultérieure : avec Scala 2.8, ça pourrait être fait comme ceci :

est un après cela.

Voir aussi réponse Ben James' d’une façon plus explicite (à l’aide de JavaConverters), qui semble être recommandé maintenant.

62voto

Ben James Points 41165

Si vous voulez être plus explicite que les JavaConversions démontré dans la réponse de robinst, vous pouvez utiliser JavaConverters :

25voto

stempler Points 1

JavaConversions (robinst de réponse) et JavaConverters (Ben James réponse) ont été dépréciées avec Scala 2.10.

Au lieu de JavaConversions utilisation:

import scala.collection.convert.wrapAll._

comme suggéré par aleksandr_hramcov.

Au lieu de JavaConverters utilisation:

import scala.collection.convert.decorateAll._

Pour les deux il y a également la possibilité d'importer uniquement les conversions/convertisseurs de Java ou Scala, respectivement, par ex.:

import scala.collection.convert.wrapAsScala._

16voto

Jorge Ortiz Points 3374

Votre dernière suggestion fonctionne, mais vous pouvez également éviter d’utiliser `` :

Notez que est mis à la disposition par défaut grâce à .

13voto

Surya Suravarapu Points 514

Vous pouvez également découvrir cette excellente bibliothèque : scalaj-collection qui propose une conversion bidirectionnelle entre les collections Java et Scala. Dans votre cas, pour convertir un java.util.List Scala liste vous pouvez faire ceci :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X