109 votes

Comment convertir un java.util.List en une liste Scala

J'ai cette méthode Scala avec l'erreur ci-dessous. Impossible de convertir en une liste Scala.

 def findAllQuestion():List[Question]={
   questionDao.getAllQuestions()
 } 

correspondance de type; trouvé : java.util.List[com.aitrich.learnware.model.domain.entity.Question] requis : scala.collection.immutable.List[com.aitrich.learnware.model.domain.entity.Question]

3 votes

Les personnes qui consultent cette question pourraient trouver cette autre question intéressante : stackoverflow.com/questions/8301947/…

129voto

fynn Points 2112

Vous pouvez simplement convertir la liste en utilisant JavaConverters de Scala :

import scala.collection.JavaConverters._

def findAllQuestion():List[Question] = {
  questionDao.getAllQuestions().asScala.toList
}

2 votes

Cela semble fonctionner.. def findAllStudentTest(): List[StudentTest] = { var list = studentTestDao.getAllStudentTests() var slist = list.asScala.toList slist }

14 votes

Une java.util.List .asScala me revient étrangement comme un tampon pour moi.

2 votes

Moi aussi: ` scala> import scala.collection.JavaConverters._ ` import scala.collection.JavaConverters._ scala> val l = new java.util.ArrayList[java.lang.String] l: java.util.ArrayList[String] = [] scala> l.add("hi") res70: Boolean = true scala> l.add("de") res71: Boolean = true scala> l.asScala res72: scala.collection.mutable.Buffer[String] = Buffer(hi, de)`

76voto

Neil Points 45
import scala.collection.JavaConversions._

va effectuer une conversion implicite pour vous ; par exemple:

var list = new java.util.ArrayList[Int](1,2,3)
list.foreach{println}

32voto

jijeshvu07 Points 236
def findAllStudentTest(): List[StudentTest] = { 
  studentTestDao.getAllStudentTests().asScala.toList
}

3 votes

Pourquoi les vars? De plus, il semble que les deux dernières lignes pourraient être combinées en une seule ligne list.asScala.toList

0 votes

Le premier var list recevra java util list et le deuxième slist convertira java util list en scala list.

4 votes

Je veux dire, pourquoi var au lieu de val si vous ne modifiez pas la variable

22voto

Xavier Guihot Points 6414

À partir de Scala 2.13, le package scala.collection.JavaConverters est marqué comme obsolète en faveur de scala.jdk.CollectionConverters:

import scala.jdk.CollectionConverters._

// val javaList: java.util.List[Int] = java.util.Arrays.asList(1, 2, 3)
javaList.asScala.toList
// List[Int] = List(1, 2, 3)

8voto

raychenon Points 1068

Importer JavaConverters, la réponse de @fynn manquait toList

import scala.collection.JavaConverters._

def findAllQuestion():List[Question] = {
  //           java.util.List -> Buffer -> List
  questionDao.getAllQuestions().asScala.toList
}

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