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._그래서 이 답변이
덱스터 스페

JavaConverts는 다음을 위해 더 이상 사용되지 않습니다 scala.jdk.CollectionConverters._. 2.13부터. 자세한 내용은 여기에서 확인할 수 있습니다 .
Steven Levine

122

Scala를 사용하여 List를 간단히 변환 할 수 있습니다 JavaConverters.

import scala.collection.JavaConverters._

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

2
이 작업 보인다 .. 데프 findAllStudentTest () :리스트 [StudentTest] = {var에 목록 = studentTestDao.getAllStudentTests () VAR SLIST = list.asScala.toList SLIST}
boycod3

13
java.util.List .asScala는 이상하게도 버퍼로 돌아옵니다.
phillro

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 : Boolean = true scala> l.add ( "de") res71 : Boolean = true scala> l.asScala res72 : scala.collection.mutable.Buffer [String ] = Buffer (hi, de)`
critium

2
@mauhiz Scala Buffer가 Java List라면 아무것도 괜찮습니다! OP는 Java List에서 변경 불가능한 Scala List 로의 변환을 원했습니다. Scala를 예상하는 표현식 ListBuffer.
Andres F.

4
당신은 추가 깜빡 .toList 코드가 그래서questionDao.getAllQuestions().asScala.toList
레이몬드 Chenon

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

3
vars? 또한 마지막 두 줄을 한 줄로 결합 할 수있는 것 같습니다list.asScala.toList
redent84

첫 번째 var 목록은 java util 목록을 가져오고 두 번째 slist는 java util 목록을 scala 목록으로 변환합니다.
boycod3

4
내 말은, 왜 var대신 val당신은 변수를 수정하지 않는 경우
redent84

그러나 하위 작업의 경우 val 대신 var를 사용해야합니다.
boycod3

모두 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.