scala.List를 java.util.List로 변환하는 방법은 무엇입니까?
Scala scala.List를 Java 로 변환하는 방법은 java.util.List무엇입니까?
Scala List와 Java List는 두 가지 다른 짐승입니다. 전자는 불변이고 후자는 변경 가능하기 때문입니다. 따라서 서로간에 가져 오려면 먼저 Scala List를 변경 가능한 컬렉션으로 변환해야합니다.
Scala 2.7에서 :
import scala.collection.jcl.Conversions.unconvertList
import scala.collection.jcl.ArrayList
unconvertList(new ArrayList ++ List(1,2,3))
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): _*)
그러나이 asList예제에서 예상되는 유형이 Java List인 경우에는 변환이 암시 적이므로 마지막 줄에서 보여주는 것처럼 필요하지 않습니다 .
왜 이것이 전에 언급되지 않았는지 확실하지 않지만 가장 직관적 인 방법은 Scala 목록에서 JavaConverters 의 asJava데코레이터 메서드를 직접 호출하는 것입니다 .
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]
이전 답변을 요약하려면
다음이 있다고 가정합니다 List.
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]
이 경우 공동 제어 변환을하지 않으려 및하자 컴파일러를 만들 암시 당신을 위해 일을 :
scala> import scala.collection.JavaConversions._
import scala.collection.JavaConversions._
scala> val javaList: java.util.List[Int] = scalaList
javaList: java.util.List[Int] = [1, 2, 3]
코드를 제어하는 방법은 사용자에게 달려 있습니다.
내가 대답 할 것이지만 꽤 오래된 질문이 주어졌지만 대부분의 제안은 더 이상 사용되지 않습니다.
import scala.collection.JavaConversions.seqAsJavaList
val myList = List("a", "b", "c")
val myListAsJavaList = seqAsJavaList[String](myList)
최신 정보
스칼라 2.9.2 사용 :
import scala.collection.JavaConversions._
import scala.collection.mutable.ListBuffer
val x: java.util.List[Int] = ListBuffer( List( 1, 2, 3 ): _* )
결과
[1, 2, 3]
시작 Scala 2.13하면 패키지 scala.jdk.CollectionConverters는 asJava포주를 통해 제공 하고 패키지 를 Seq대체합니다 scala.collection.JavaConverters/JavaConversions.
import scala.jdk.CollectionConverters._
// val scalaList: List[Int] = List(1, 2, 3)
scalaList.asJava
// java.util.List[Int] = [1, 2, 3]
단일 호출의 경우 수동으로 수행하는 것이 가장 간단한 솔루션 일 수 있습니다.
val slist = List (1, 2, 3, 4)
val jl = new java.util.ArrayList [Integer] (slist.size)
slist.foreach (jl.add (_))
성능을 측정하지 않았습니다.
위에서 제안한대로 수행하면 Java 측에서도 불변 목록이 생성됩니다. 내가 찾은 유일한 해결책은 다음과 같습니다.
def toJList[T](l:List[T]):util.List[T] = {
val a = new util.ArrayList[T]
l.map(a.add(_))
a
}
Since Scala 2.12.0 JavaConversions has been deprecated.
So the simplest solution for me was :
java.util.Arrays.asList("a","b","c")
참고URL : https://stackoverflow.com/questions/2429944/how-to-convert-a-scala-list-to-a-java-util-list
'IT박스' 카테고리의 다른 글
| Java의 열거 형에 ==를 사용해도됩니까? (0) | 2020.08.11 |
|---|---|
| Django 양식에서 선택한 값 설정 .ChoiceField (0) | 2020.08.11 |
| Android에서 텍스트 파일을 어떻게 읽을 수 있습니까? (0) | 2020.08.11 |
| 페이지 앵커에 해시 태그를 사용하는 Angular2 라우팅 (0) | 2020.08.11 |
| Qt Creator 프로젝트에 외부 라이브러리 추가 (0) | 2020.08.11 |