加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 最简单的方式来决定列表是否包含重复项?

发布时间:2020-12-16 09:37:26 所属栏目:安全 来源:网络整理
导读:一种方法就是这样 list.distinct.size != list.size 有没有更好的方法?这将是一个很好的拥有一个containsDuplicates方法 解决方法 假设“更好”意味着“更快”,请参阅 this question中基准的替代方法,这似乎显示了一些更快捷的方法(尽管注意到distinct使
一种方法就是这样

list.distinct.size != list.size

有没有更好的方法?这将是一个很好的拥有一个containsDuplicates方法

解决方法

假设“更好”意味着“更快”,请参阅 this question中基准的替代方法,这似乎显示了一些更快捷的方法(尽管注意到distinct使用HashSet并已经是O(n))。 YMMV当然取决于具体的测试用例,scala版本等等。与“distinct.size”方法相比,任何重大改进都将来自于一旦发现重复的一个早期版本,但是加速是多少实际获得的将很大程度上取决于您的用例中实际使用的常用重复项。

如果您的意思是“更好”,因为您要编写list.containsDuplicates而不是containsDuplicates(list),请使用隐式:

implicit def enhanceWithContainsDuplicates[T](s:List[T]) = new {
  def containsDuplicates = (s.distinct.size != s.size)
}

assert(List(1,2,3).containsDuplicates)
assert(!List("a","b","c").containsDuplicates)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读