如何合并Scala中的数组列表中的元素?

时间:2017-04-08 07:45:58

标签: arrays scala list

我有一个数组列表,其中一些元素是相同的但是一列不相同而且它是“创建时间”,现在我想要其中一个具有更大“创建时间”

我的清单:

List(
  ("hello", " marry", "01/31/2015 17:58:18"),
  ("hello", " marry", "01/31/2015 18:58:18"),
  ("Thanks", "jay", "02/02/2015 20:27:28")
)

预期结果:

List(
  ("hello", " marry", "01/31/2015 18:58:18"),
  ("Thanks", "jay", "02/02/2015 20:27:28")
)

请有人向我提出建议。提前致谢

1 个答案:

答案 0 :(得分:3)

你说你有一个“数组列表”,但你的数据示例是一个元组列表。此解决方案假定数据位于元组中。

val ts = List(("hello", " marry", "01/31/2015 17:58:18")
            , ("hello", " marry", "01/31/2015 18:58:18")
            , ("Thanks", "jay", "02/02/2015 20:27:28"))

ts.groupBy(x => (x._1,x._2)).mapValues(_.maxBy(_._3)).values.toList

这也假设结果的顺序并不重要,只要选择了正确的元素。

另外值得注意的是:由于这些日期字符串的年份位于错误的位置,因此简单的字符串比较将无法识别"12/31/2015" 之前的 { {1}}。