比较数组中相同案例 class 的数据
compare same case class data from an array
我有一个案例 class 如下:
case class bar(id:String, name : String, gender : String, dob : String)
样本数据如下:
val barList = Array(bar("1", "ABC", "M", "2000-06-06"),
bar("2", "DEF", "F", "2009-11-12"),
bar("1", "GHI", "M", "2002-06-30"),
bar("2", "JKL", "F", "2008-10-30"))
现在我想获得基于 id 的人名的最大和最小 Dob
def getMaxDOBName(id :String) = { val idarray = barList.groupBy(_.id)(id).sortBy(_.dob); idarray(0).name }
def getMinDOBName(id :String) = { val idarray = barList.groupBy(_.id)(id).sortBy(_.dob); idarray(1).name }
我低于输出:
scala> getMaxDOBName("1")
res16: String = ABC // wrong
scala> getMaxDOBName("2")
res17: String = JKL // wrong
我是否需要将 dob 转换为日期格式然后进行排序,或者我们可以得到任何简单的方法吗?
尝试将 maxBy
和 minBy
与 filter
一起使用:
def getMaxDOBName(id :String) = barList.filter(_.id == id).maxBy(_.dob).name
我个人认为在一般情况下,将字符串转换为实际日期是更正确的方法。
我有一个案例 class 如下:
case class bar(id:String, name : String, gender : String, dob : String)
样本数据如下:
val barList = Array(bar("1", "ABC", "M", "2000-06-06"),
bar("2", "DEF", "F", "2009-11-12"),
bar("1", "GHI", "M", "2002-06-30"),
bar("2", "JKL", "F", "2008-10-30"))
现在我想获得基于 id 的人名的最大和最小 Dob
def getMaxDOBName(id :String) = { val idarray = barList.groupBy(_.id)(id).sortBy(_.dob); idarray(0).name }
def getMinDOBName(id :String) = { val idarray = barList.groupBy(_.id)(id).sortBy(_.dob); idarray(1).name }
我低于输出:
scala> getMaxDOBName("1")
res16: String = ABC // wrong
scala> getMaxDOBName("2")
res17: String = JKL // wrong
我是否需要将 dob 转换为日期格式然后进行排序,或者我们可以得到任何简单的方法吗?
尝试将 maxBy
和 minBy
与 filter
一起使用:
def getMaxDOBName(id :String) = barList.filter(_.id == id).maxBy(_.dob).name
我个人认为在一般情况下,将字符串转换为实际日期是更正确的方法。