将java.util.ArrayList转换为Scala中的Seq

时间:2018-04-13 02:53:49

标签: scala

我在Scala中有以下结构:

import java.util.ArrayList
val array = new ArrayList[ArrayList[String]]

// ... add values to array

现在,我需要将其转换为Seq[Seq[String]],如何实现?

3 个答案:

答案 0 :(得分:2)

您可以执行以下操作,

import scala.collection.JavaConversions._
val array = new ArrayList[ArrayList[String]]
val seq: Seq[Seq[String]] = array.map(_.toSeq)
...

让我知道这是否有帮助,干杯。

答案 1 :(得分:1)

使用显式转换的第二种解决方案:

import scala.collection.JavaConverters._
import java.util.ArrayList

val array = new ArrayList[ArrayList[String]]

// Mutable, default conversion for java.util.ArrayList
val mutableSeq : Seq[Seq[String]] = array.asScala.map( _.asScala)

// Immutable, using toList on mutable conversion result
val immutableSeq : Seq[Seq[String]] = array.asScala.toList.map( _.asScala.toList)

为了阐明Java JavaConverters和JavaConversions之间的区别,请阅读:

What is the difference between JavaConverters and JavaConversions in Scala?

答案 2 :(得分:0)

scala.collection.JavaConverters._ 已弃用。 最新的方法是:

import scala.collection.JavaConversions._

val a = asScalaBuffer(array)

现在您可以将 a 转换为任何集合

to        toBuffer       toIterable   toList   toParArray   toSet      toString        toVector
toArray   toIndexedSeq   toIterator   toMap    toSeq        toStream   toTraversable

喜欢这个

val b = a.toSeq

Here 是一个完整的教程