120 votes

Comment convertir un scala.List en java.util.List?

J'essaie d'utiliser du code Scala et j'ai du mal à comprendre comment convertir les listes Scala en listes Java standard.

Des idées?

173voto

dimitrisli Points 5203

Vous ne savez pas pourquoi cela n'a pas été mentionné auparavant, mais je pense que le moyen le plus intuitif consiste à invoquer la méthode asJava décorateur de JavaConverters directement dans la liste Scala:

 scala> val scalaList = List(1,2,3)
scalaList: List[Int] = List(1, 2, 3)

scala> import scala.collection.JavaConverters._
import scala.collection.JavaConverters._

scala> scalaList.asJava
res11: java.util.List[Int] = [1, 2, 3]
 

69voto

Daniel C. Sobral Points 159554

Scala Liste et Liste sur Java sont deux bêtes, parce que l'ancien est immuable et le dernier est mutable. Donc, aller de l'une à l'autre, vous devez d'abord convertir la Scala de Liste dans une mutable collection.

Sur Scala 2.7:

import scala.collection.jcl.Conversions.unconvertList
import scala.collection.jcl.ArrayList
unconvertList(new ArrayList ++ List(1,2,3))

Sur Scala 2.8:

import scala.collection.JavaConversions._
import scala.collection.mutable.ListBuffer
asList(ListBuffer(List(1,2,3): _*))
val x: java.util.List[Int] = ListBuffer(List(1,2,3): _*)

Toutefois, asList dans cet exemple n'est pas nécessaire si le genre attendu est un Java List, la conversion est implicite, comme l'a démontré la dernière ligne.

6voto

ams Points 238

Vous voudrez peut-être envisager d'utiliser Scala-JavaUtils de Jorge Ortiz (http://github.com/jorgeortiz85/scala-javautils).

5voto

ratty Points 3926

Les combats Scala – Scala, Java Conversion de Liste de « Stubbisms ...

http://stubbisms.wordpress.com/2009/02/18/fighting-scala-scala-to-java-list-conversion/

Nabble - Scala - Utilisateur - incompatibilité de Type: impossible de convertir de ...

http://old.nabble.com/Type-mismatch:-cannot-convert-from-Iterable%3CFile%3E-to-Iterable%3CFile%3E-td20322743.html

5voto

Guillaume Massé Points 1329

Mettre à jour

avec scala 2.9.2:

 import scala.collection.JavaConversions._
import scala.collection.mutable.ListBuffer
val x: java.util.List[Int] = ListBuffer( List( 1, 2, 3 ): _* )
 

résultat

 [1, 2, 3]
 

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