我在Scala中使用java库。其中一个库返回列表列表。我想要压扁清单。
示例:
import scala.collection.JavaConverters._
var parentList : util.List[util.List[Int]] = null
parentList = new util.ArrayList[util.List[Int]]
parentList.asScala.flatten // error
我使用过 asScala 转换器,但我仍然遇到错误。
答案 0 :(得分:3)
您需要在每个内部列表上调用.asScala
:
scala> parentList.asScala.map(_.asScala)
res0: scala.collection.mutable.Buffer[scala.collection.mutable.Buffer[Int]] = ArrayBuffer()
scala> parentList.asScala.map(_.asScala).flatten
res1: scala.collection.mutable.Buffer[Int] = ArrayBuffer()
请注意,使用.map
可以一步完成.flatten
然后调用.flatMap
:
scala> parentList.asScala.flatMap(_.asScala)
res2: scala.collection.mutable.Buffer[Int] = ArrayBuffer()
答案 1 :(得分:1)
您还需要转换内部List[Int]
:
parentList.asScala.flatMap(_.asScala)
答案 2 :(得分:1)
试试这个
import scala.collection.convert.wrapAsScala._
parentList.toSeq.map(_.toSeq).flatten
这样就可以了。