PFB case classes
class TypeData()
case class delivery(accept_language:String,customer_id:String) extends TypeData
case class junk(`type`:String) extends TypeData
我有一个类型为 Array[Seq[TypeData]]
的对象"检查",示例数据如下所示,
Array[Seq[TypeData]] = Array(ArrayBuffer(delivery(null,1035), delivery(null,1035), junk(injection), junk(open), junk(injection), delivery(null,1035), delivery(null,1035), delivery(null,1035), delivery(null,1035), delivery(null,1035), junk(injection), junk(injection), delivery(null,1035), junk(injection), delivery(null,1035), junk(injection), junk(injection), junk(injection), delivery(null,1035), junk(injection), junk(injection), delivery(null,1035), delivery(null,1035), junk(injection), delivery(null,1035), delivery(null,1035), delivery(null,1035), delivery(null,1035), junk(injection), junk(injection), delivery(null,1035), junk(injection), junk(click), junk(injection), delivery(null,1035), junk(injection), delivery(null,1035), delivery(null,1035), junk(open), junk(injection), deli...
现在我想知道,如何隔离每个对象类型数据以拥有自己的引用。 示例,
val delivery_data = Seq[delivery] (should contain only delivery type data) (delivery(null,1035), delivery(null,1035), delivery(null,1035), delivery(null,1035)....) and similarly
val junk_data = Seq[junk] (should contain only junk type data)
(junk(injection), junk(click), junk(injection)
问候萨蒂亚吉特。
val a: Array[Seq[TypeData]] = ???
val (deliveries, junks) =
a.flatten.foldLeft((Seq.empty[delivery], Seq.empty[junk])) {
case ((d, j), e: delivery) => (d :+ e, j)
case ((d, j), e: junk) => (d, j :+ e)
}
如果您只想收集交货或仅收集垃圾,则以下方法适用于此:
val deliveries = a.flatten collect {
case d: delivery => d
}
或
val junks = a.flatten collect {
case j: junk => j
}
val data: Array[Seq[TypeData]] = ???
data(0).partition(_.isInstanceOf[delivery])