在Scala中,是否有一种简单的方法可以根据函数的结果获取不同的元素列表?

时间:2019-01-16 20:52:04

标签: scala

我看到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)

1 个答案:

答案 0 :(得分:2)

this answer中提到的类似问题,Scala 2.13向序列添加了distinctBy方法:

Seq(1,3,4,5).distinctBy(_ % 2)