Outras dicas

Se você quiser ser mais explícito do que os JavaConversions demonstrados em robinst de resposta , você pode usar JavaConverters:

import scala.collection.JavaConverters._
val l = new java.util.ArrayList[java.lang.String]
val s = l.asScala.toSet

JavaConversions ( de robinst resposta ) e JavaConverters (resposta de Ben James ) foram reprovados com Scala 2.10 .

Em vez de JavaConversions uso:

import scala.collection.convert.wrapAll._

aleksandr_hramcov .

Em vez de JavaConverters uso:

import scala.collection.convert.decorateAll._

Para tanto, há também a possibilidade de importar apenas as conversões / conversores para Java ou Scala, respectivamente, por exemplo:.

import scala.collection.convert.wrapAsScala._

Update: A declaração acima que JavaConversions e JavaConverters foram obsoleto parece estar errado. Havia algumas propriedades Reprovados no Scala 2.10, que resultaram em advertências deprecation ao importá-los. Assim, as importações alternativo aqui parecem ser apenas aliases. Embora eu ainda preferem eles, como IMHO os nomes são os mais adequados.

Você também pode querer explorar este excelente biblioteca: scalaj-collection que tem dois sentidos conversão entre coleções Java e Scala. No seu caso, para converter um java.util.List a Lista Scala você pode fazer isso:

val list = new java.util.ArrayList[java.lang.String]
list.add("A")
list.add("B")
list.asScala
val array = java.util.Arrays.asList("one","two","three").toArray

val list = array.toList.map(_.asInstanceOf[String])

Você pode adicionar as informações de tipo na chamada toArray para formar o conjunto ser parametrizado:

 val s = Set(javaApi.query(....).toArray(new Array[String](0)) : _*)

Isso pode ser preferível que o pacote coleções está passando por um grande retrabalho para Scala 2.8 eo pacote scala.collection.jcl é indo embora

Outra forma simples de resolver este problema:

import collection.convert.wrapAll._

Você poderia converter a coleção Java para uma matriz e, em seguida, criar uma lista Scala de que:

val array = java.util.Arrays.asList("one","two","three").toArray
val list = List.fromArray(array)

Iniciando Scala 2.13, pacote scala.jdk.CollectionConverters pacotes Substitui scala.collection.JavaConverters/JavaConversions._:

import scala.jdk.CollectionConverters._

// val javaList: java.util.List[String] = java.util.Arrays.asList("one","two","three")
javaList.asScala
// collection.mutable.Buffer[String] = Buffer("one", "two", "three")
javaList.asScala.toSet
// collection.immutable.Set[String] = Set("one", "two", "three")
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top