对于给定的Array[Byte]
,例如
val in = Array(104, 101, 108, 108, 111, 10, 119, 111, 114, 108, 100, 10)
如何按值 10
拆分它,这样
val out = in.arr_split(10)
会交付
Array( Array(104, 101, 108, 108, 111),
Array(119, 111, 114, 108, 100))
一般假设拆分元素出现很多次,例如很多 10
。
如果可能,需要并行解决方案。
非常感谢。
最佳答案
像这样的东西应该可以工作:
def split(l: Array[Int], i:Int):Array[Array[Int]] = {
l match {
case Array() => Array()
case _ =>
val (h, t) = l.span(a => a != i)
Array(h) ++ split(t.drop(1), i)
}
}
val in = Array(104, 101, 108, 108, 111, 10, 119, 111, 114, 108, 100, 10)
val out = split(in, 10)
// res: Array[Array[Int]] = Array(Array(104, 101, 108, 108, 111), Array(119, 111, 114, 108, 100))
关于arrays - Scala 数组拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23045707/