arrays - Scala 数组拆分

标签 arrays scala collections split

对于给定的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/

相关文章:

mysql - 如何实现 Slick + MySQL + SecureSocial?

java - 在 Dos 命令提示符中检查 Scala 的当前版本

c# - 反射 PropertyInfo.GetValue 来自集合

java - 如何从包含重复值的多个列表中创建唯一数据列表

ios - 为每个 Collection View 单元格创建一个数组

javascript - 为什么以下 javascript 数组排序决定我的两个排序顺序参数未定义?

基于外部文件的 C++ 数组

Scala 2.10 和包反射

c# - 事件集锦

c# - System.Array 是否对值类型执行装箱?