2017-04-08 131 views
0

我有一個數組列表,其中一些元素是相同的,但一列不相同,它是「創建時間」,現在我想要其中一個具有更大的「創建時間」如何合併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

你有什麼嘗試?你有什麼特殊*代碼有問題嗎?你在標題中談到的陣列在哪裏?你的代碼中沒有數組。 –

回答

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