scala组在命名tuple上获取最小值

nmpmafwu  于 2021-05-24  发布在  Spark
关注(0)|答案(1)|浏览(687)

我有一系列命名元组,如下所示:
seq[大地水准仪]其中大地水准仪属于 GeoDetails(geo_name: String, first_geo_time: Long) 在这个序列中,一个geo可以有多个记录,我想写一个函数来按geo\u name分组,并在第一次geo\u时取最小值。例如。
输入:

Seq(GeoDetails("cn", 1111111111111L), GeoDetails("mx", 2222222222222L), GeoDetails("mx", 3333333333333L), GeoDetails("cn", 4444444444444L))

期望输出:

Seq(GeoDetails("cn", 1111111111111L), GeoDetails("mx", 2222222222222L))

我认为使用groupby和foldleft可以完成这项工作,但我是scala的新手,希望能在这方面得到一些帮助。我想在维护case类的情况下获得输出

nkhmeac6

nkhmeac61#

类似于(scala 2.13):

val list = Seq(GeoDetails("cn", 1111111111111L), GeoDetails("mx", 2222222222222L), GeoDetails("mx", 3333333333333L), GeoDetails("cn", 4444444444444L))

 list.groupBy(_.geo_name).view.mapValues(el => el.sortBy(_.first_geo_time).head).toList

相关问题