java scala type-conversion seq

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(); }