我有对的数组:排序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的任何好处。向我们展示代码,然后可能是我们可以提供帮助。 –