我有對的數組:排序Scala中,首先由值,然後通過鍵
Array(("hello",200.00),("name",100.00),("a",200.00),("say",150.67))
我希望它分類爲:在第一按值降序
Array(("a",200.00),("hello",200.00),("say",150.67),("name",100.00))
排序,然後按升序關鍵
我有對的數組:排序Scala中,首先由值,然後通過鍵
Array(("hello",200.00),("name",100.00),("a",200.00),("say",150.67))
我希望它分類爲:在第一按值降序
Array(("a",200.00),("hello",200.00),("say",150.67),("name",100.00))
排序,然後按升序關鍵
這麼簡單
array sortBy {case (k,v) => (-v,k)}
嘗試使用sortWith:
val a = Array(("hello",200.00),("name",100.00),("a",200.00),("say",150.67))
val sorted = a.sortWith((a, b) => a._2 > b._2 || (a._2 == b._2 && a._1 < b._1))
您可以按價值 - >排序它 - >映射每個分組,以通過鍵SEQ排序 - >反向所有SEQ
val groupdByValue = a.groupBy { case (k, v) => v }.toSeq
val groupsSortedByValue = groupdByValue.sortBy { case (value, group) => value }
val sortedByValueThenKey = groupsSortedByValue.flatMap { case (k, v) => v.sortBy { case (k, v) => v } }.reverse
sortedByValueThenKey:序號[(字符串,雙)] = ArrayBuffer((A, 200.0),(你好,200.0),(比如,150.67),(姓名,100.0))
那你試試這麼遠嗎? – Mysterion
我正在製作一個火花簇。所以我用sortBy命令,但這種排序只有關鍵或值 – Matt
那麼......那麼爲什麼你使用陣列。如果您希望Spark使用RDD的任何好處。向我們展示代碼,然後可能是我們可以提供幫助。 –