我知道scala.collection包中有两个非常有用的对象,它们将帮助我们实现这个目标:
但我在我的案例中应用它们有些麻烦,因为我的数据结构比我在很多例子中看到的其他数据结构稍微复杂一些。
我在scala代码中,我希望我的scala函数返回Java集合。所以我想将Scala Seq [(Int,Seq [String])]转换为Java集合List [(int,List [String])]。
我该怎么做?
答案 0 :(得分:7)
在第一张地图Seq[(Int, Seq[String])]
至Seq[(Int, List[String])]
使用地图,然后再将相同的功能用于主集合
import scala.collection.JavaConversions
val seq : Seq[(Int, Seq[String])] = some code
val seqOfLists = seq.map(s => (s._1, JavaConversions.seqAsJavaList(s._2)))
val listOfLists = JavaConversions.seqAsJavaList(seqOfLists)
或更新的API:
import scala.collection.JavaConverters._
val seq : Seq[(Int, Seq[String])] = some code
val seqOfLists = seq.map(s => (s._1, s._2.asJava))
val listOfLists = seqOfLists.asJava
答案 1 :(得分:3)
JavaConversions
已弃用。请改用JavaConverters
:
import scala.collection.JavaConverters._
val seq: Seq[(Int, Seq[String])] = ???
val javaList = seq.map(x => (x._1, x._2.asJava)).asJava
// java.util.List[(Int, java.util.List[String])]