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

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

问题描述:

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

我的清单:

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") 
) 

请人给的建议,我在此先感谢

+0

是否始终是第三个元素是创建时间? – Harald

+1

你有什么尝试?你有什么特殊*代码有问题吗?你在标题中谈到的阵列在哪里?你的代码中没有数组。 –

你说。你有一个“数组列表”,但你的数据例子是元组列表。该解决方案假定数据是以元组的形式存在的。

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""01/01/2016"之前谈到