首页 文章

如何将Scala集合Seq [(Int,Seq [String])]转换为Java集合List [(int,List [String])]?

提问于
浏览
3

我知道scala.collection包中有两个非常有用的对象,它们将帮助我们实现这个目标:

  • JavaConverters(如果我想要明确并准确告诉我要转换的内容)

  • JavaConversions(如果我不想进行共同控制转换,让编译器为我做隐式工作)

但是我在我的案例中应用它们有一些麻烦,因为我的数据结构比我在许多例子中看到的其他数据结构稍微复杂一些 .

我在scala代码中,我希望我的scala函数返回Java集合 . 所以我想将Scala Seq [(Int,Seq [String])]转换为Java集合List [(int,List [String])] .

我怎样才能做到这一点?

2 回答

  • 7

    首先使用map映射 Seq[(Int, Seq[String])]Seq[(Int, List[String])] 然后再使用相同的函数到main集合

    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
    
  • 2

    自Scala 2.12.0起,不推荐使用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])]
    

相关问题