Convertir la lista de Java en Scala Seq
type-conversion (5)
Necesito implementar un método que devuelva un "Seq", en Java Pero encuentro un error, no sé cómo resolverlo.
java.util.ArrayList cannot be cast to scala.collection.Seq
Aquí está mi código hasta ahora
@Override
public Seq<String> columnNames() {
List<String> a = new ArrayList<String>();
a.add("john");
a.add("mary");
Seq<String> b = (scala.collection.Seq<String>) a;
return b;
}
scala.collection.JavaConverters.
no parece ofrecer la posibilidad de convertir como Seq
. Gracias
JavaConversions
debería funcionar. Creo que estás buscando algo como esto: JavaConversions.asScalaBuffer(a).toSeq()
Hasta 4 elementos, puede simplemente usar el método de fábrica de la clase Seq de esta manera:
Seq<String> seq1 = new Set.Set1<>("s1").toSeq();
Seq<String> seq2 = new Set.Set2<>("s1", "s2").toSeq();
Seq<String> seq3 = new Set.Set3<>("s1", "s2", "s3").toSeq();
Seq<String> seq4 = new Set.Set4<>("s1", "s2", "s3", "s4").toSeq();
@ Fundhor , el método asScalaIterableConverter
no aparecía en el IDE. Puede deberse a una diferencia en las versiones de Scala. Estoy usando Scala 2.11. En cambio, apareció como convertidor de asScalaIteratorConverter
. Hice un ligero cambio en tu último fragmento y funcionó bien para mí.
scala.collection.JavaConverters.asScalaIteratorConverter(columnNames.iterator()).asScala().toSeq()
donde columnNames
es un java.util.List
.
Gracias !
¡Esto funcionó para mí! (Java 8, Spark 2.0.0)
import java.util.ArrayList;
import scala.collection.JavaConverters;
import scala.collection.Seq;
public class Java2Scala
{
public Seq<String> getSeqString(ArrayList<String> list)
{
return JavaConverters.asScalaIterableConverter(list).asScala().toSeq();
}
}
JavaConverters fue mi respuesta.
import scala.collection.JavaConverters;
public Seq<String> convertListToSeqTest() {
List<String> a = new ArrayList<String>();
a.add("john");
a.add("mary");
return JavaConverters.asScalaIterableConverter(a).asScala().toSeq();
}