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 listとval 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.