스칼라 변환 방법java.util.List에 목록 표시?
Scala 변환 방법scala.List
자바어로java.util.List
?
왜 이런 말을 안 했는지 모르겠지만 가장 직관적인 방법은 이 명령어를 호출하는 것입니다.asJava
JavaConverters의 decorator 메서드를 Scala 목록에 직접 추가합니다.
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 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
마지막 행에서 알 수 있듯이 변환이 암묵적이기 때문입니다.
이전 답변을 요약하면
다음과 같은 것이 있다고 가정합니다.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]
코드를 어떻게 제어하느냐에 따라 달라집니다.
시작하는Scala 2.13
패키지는 다음 포주를 통해 제공됩니다.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]
꽤 오래된 질문들이지만, 제가 대답하겠지만, 대부분의 제안들은 추천되지 않습니다.
import scala.collection.JavaConversions.seqAsJavaList
val myList = List("a", "b", "c")
val myListAsJavaList = seqAsJavaList[String](myList)
갱신하다
scala 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]
단일 호출의 경우 수동으로 실행하는 것이 가장 간단한 해결책일 수 있습니다.
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
}
Scala 2.12.0 이후 Java Conversions는 폐지되었습니다.
그래서 저에게 가장 간단한 해결책은 다음과 같습니다.
java.util.Arrays.asList("a","b","c")
언급URL : https://stackoverflow.com/questions/2429944/how-to-convert-a-scala-list-to-a-java-util-list
'itsource' 카테고리의 다른 글
Google Chrome JavaScript 콘솔에서 디버깅 메시지를 인쇄하려면 어떻게 해야 합니까? (0) | 2022.09.11 |
---|---|
Java에서 Clojure로 리라이트 (0) | 2022.09.11 |
형제 결과에서 매개 변수에 대한 행 값을 일치시키는 방법은 무엇입니까? (0) | 2022.09.11 |
어레이의 한 속성에 대해 어레이 내의 개체를 알파벳 순으로 정렬합니다. (0) | 2022.09.11 |
스프링 부트 시 "기본 보안 비밀번호 사용" 삭제 (0) | 2022.09.11 |