【问题标题】:Checking whether scala set intersection is empty检查scala集合交集是否为空
【发布时间】:2017-05-28 14:24:33
【问题描述】:

有没有推荐的方法来检查两个 scala 集合Sets 是否有非空交集?当然有明显的

set1.intersect(set2).isEmpty

但这实际上首先构造了交集,除非我弄错了。有没有更好/更快的方法?

【问题讨论】:

    标签: scala set scala-collections


    【解决方案1】:

    惯用的方法是使用 .intersect() 或 .diff() 但两种方法都在内部构建新集合。

    最快的方法是:

    • 手动迭代第一个集合直到第二个匹配
    • 使用概率布隆过滤器需要一些时间来构建它,但可以非常快速地比较两个集合(甚至非常大)(有时可能会给出误报)

    【讨论】:

      【解决方案2】:

      我会推荐这个:

      set1.exists(set2.contains)
      

      可读性不如“set1.intersectionNonEmpty(set2)”,但您可以将其解读为“在 set1 中,存在一些 set2 的元素 包含”。

      【讨论】:

        猜你喜欢
        • 2011-04-24
        • 2016-06-20
        • 2017-05-07
        • 2018-08-09
        • 2021-11-02
        • 1970-01-01
        • 2013-06-19
        • 2016-03-28
        • 2012-02-28
        相关资源
        最近更新 更多