java.util.ListをScalaリストに変換する方法


105

このScalaメソッドには以下のエラーがあります。Scalaリストに変換できません。

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

型の不一致; 見つかりました:java.util.List[com.aitrich.learnware.model.domain.entity.Question]必須: scala.collection.immutable.List[com.aitrich.learnware.model.domain.entity.Question]


3
:この質問を見ている人々は、関心のあるこの他の質問かもしれませんstackoverflow.com/questions/8301947/...
Amndeep7

回答:


70
import scala.collection.JavaConversions._

暗黙の変換を行います。例えば:

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

10
scala.collection.JavaConversions._賛成で廃止されましたscala.collection.JavaConverters._ので、この答えは良いです
デクスターレガスピ

2.13以降、JavaConvertsは非推奨になりましたscala.jdk.CollectionConverters._。詳細はこちら
Steven Levine

122

Scalaを使用してリストを単純に変換できますJavaConverters

import scala.collection.JavaConverters._

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

2
これは機能しているようです。..def findAllStudentTest():List [StudentTest] = {var list = studentTestDao.getAllStudentTests()var slist = list.asScala.toList slist}
boycod3

13
java.util.List .asScalaが奇妙なことにバッファとして戻ってきます。
phillro 2014年

2
私も: `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:ブール= true scala> l.add( "de")res71:ブール= true scala> l.asScala res72:scala.collection.mutable.Buffer [String ] = Buffer(hi、de) `
critium 2014

2
@mauhiz Scala BufferがJavaのList場合、も問題ありません。OPは、Javaリストから不変のScalaリストへの変換を望んでいました。Scalaを期待する式は、でList型チェックを行いませんBuffer
アンドレスF.

4
あなたが追加するのを忘れ.toList コードがあるので、questionDao.getAllQuestions().asScala.toList
レイモンドChenon

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

3
なぜvars?また、最後の2行は1行に結合できるようですlist.asScala.toList
redent84 '10 / 10/20

最初のvarリストはjava utilリストを取得し、2番目のslistはjava utilリストをscalaリストに変換します。
boycod3 2014年

4
私は意味、なぜvar代わりにval、あなたは、変数を変更していない場合
redent84

ただし、サブ操作の場合は、valではなくvarを使用する必要があります。
boycod3 14

var listval slistはどちらも不要でした。彼らはこの答えをより複雑にしたと思うので、私はそれらを統合し、答えをより単純にしました。@ jijeshvu07同意しない場合は、編集を元に戻して、この変更を独自の回答として送信してください。
Cory Klein

9

以降Scala 2.13、パッケージscala.collection.JavaConvertersは非推奨としてマークされています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)

6

インポートJavaConverters、@ fynnの応答がありませんでしたtoList

import scala.collection.JavaConverters._

def findAllQuestion():List[Question] = {
  //           java.util.List -> Buffer -> List
  questionDao.getAllQuestions().asScala.toList
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.