java - 将Java列表转换为Scala序列

57 4

我需要在Java中实现一个返回Scala Seq的方法。

但我遇到了这个错误:


java.util.ArrayList cannot be cast to scala.collection.Seq



以下是我的代码:


@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似乎没有转换为Seq的可能。

时间: 原作者:

135 0

需要JavaConverters来解决这个问题。


import scala.collection.JavaConverters;



public Seq<String> convertListToSeq(List<String> inputList) {


 return JavaConverters.asScalaIteratorConverter(inputList.iterator()).asScala().toSeq();


}



原作者:
71 3

JavaConversions应该工作,我想你正在寻找类似这样: JavaConversions.asScalaBuffer(a).toSeq()

原作者:
52 2

这对我来说是有效的(Java 8,SARK 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();


 }



}



原作者:
52 3

最多4个元素,你可以简单地使用Seq类的factory方法,如下所示:


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



原作者:
74 3

Scala 2.13,软件包scala.jdk.CollectionConverters替换过时的软件包,scala.collection.JavaConverters/JavaConversions


import scala.jdk.CollectionConverters;



// List<String> javaList = Arrays.asList("a","b");


CollectionConverters.asScala(javaList).toSeq();


// Seq[String] = List(a, b)



原作者:
...