代码之家  ›  专栏  ›  技术社区  ›  Roman Kagan mianos

处理scala中的联合、子集和超集

  •  1
  • Roman Kagan mianos  · 技术社区  · 16 年前

    我需要编写一个代码片段,用于比较多个数组并生成与这些数组中的数据匹配的集合,只在数组A中生成数据集,而不在数组B、C、D中生成数据集,而在数组B、C、D中生成数据集,能够处理任意数量的数组(即动态循环)。代码应该在斯卡拉中使用匿名函数(即不像Java中的正则数组循环)。

    1 回复  |  直到 16 年前
        1
  •  2
  •   Daniel Spiewak    16 年前

    听起来像家庭作业。到目前为止,最简单的方法是将数组a的内容 Set 并使用移除操作。这将是 o(n) 哪里 n =\sum 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
    }
    
    推荐文章