我看到Scala有一个distinct
方法,它将采用一个序列并返回一个没有任何重复元素的新序列。
Seq(1,1,2,3,2,5).distinct // returns Seq(1,2,3,5)
我想做类似的事情,但是唯一性基于函数的结果。在Scala中有没有一种惯用的方式来做到这一点?
作为另一种语言的示例,我知道Groovy的类似unique
方法可以通过闭包来确定唯一性函数:
[1,3,4,5].unique { it % 2 } // returns [1,4]
Scala中是否有类似的简短描述性方法,或者我最好搭配以下内容使用?
Seq(1,3,4,5).groupBy(_ % 2).values.map(_.head)
答案 0 :(得分:2)
如this answer中提到的类似问题,Scala 2.13向序列添加了distinctBy
方法:
Seq(1,3,4,5).distinctBy(_ % 2)