在Scala中展平嵌套java列表

在Scala中展平嵌套java列表,scala,scala-java-interop,Scala,Scala Java Interop,我在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 我使用了ASCALA转换器,但仍遇到错误。您还需要转换内部列表

我在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

我使用了ASCALA转换器,但仍遇到错误。

您还需要转换内部
列表[Int]

parentList.asScala.flatMap(_.asScala)

您还需要转换内部
列表[Int]

parentList.asScala.flatMap(_.asScala)

您需要在每个内部列表上调用
.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()
请注意,可以使用
.flatMap
一步调用
.map
,然后调用
.flatte

scala> parentList.asScala.flatMap(_.asScala)
res2: scala.collection.mutable.Buffer[Int] = ArrayBuffer()

您需要在每个内部列表上调用
.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()
请注意,可以使用
.flatMap
一步调用
.map
,然后调用
.flatte

scala> parentList.asScala.flatMap(_.asScala)
res2: scala.collection.mutable.Buffer[Int] = ArrayBuffer()
像这样试试

import scala.jdk.CollectionConverters._
parentList.asScala.flatMap.map(_.toSeq)
这样就可以了。

像这样试试

import scala.jdk.CollectionConverters._
parentList.asScala.flatMap.map(_.toSeq)
这样就行了