我需要编写一个代码段,将比较多个阵列和产生匹配这些阵列中的数据,该组,产生数据只在阵列的一组,但不是在阵列B,C,d,数组B中,但不是在A,C,d,能够处理任何数量的阵列(即,动态地循环)。该代码应利用匿名函数Scala中(即,不喜欢的规则阵列中的Java循环等)。

有帮助吗?

解决方案

听起来像是功课我。到目前为止,要做到这一点最简单的方法是数组A的内容扔进Set并使用删除操作。这将是 O(n)的其中名词 = \ {总和| A |,| B |,| C |,...}。以下解决方案适用于任意Iterable,不仅仅是Array

def compareArrays[A](arrs: List[Iterable[A]]) = arrs match {
  case a :: tail => {
    val set = a.foldLeft(Set[A]()) { _ + _ }
    tail.foldLeft(set) { _ -- _ }
  }

  case Nil => Nil
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top