在Scala中展平嵌套java列表
我在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转换器,但仍遇到错误。您还需要转换内部列表
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)
这样就行了