2013-04-28 52 views
1

例如,我怎么能使用像Scala的sortWith功能排序此阵由排序阵列由多个值

val arr = Array(
    Map("name"->"A","points"->"10"), 
    Map("name"->"B","points"->"9"), 
    Map("name"->"C","points"->"8")) 

排序只有两点:

arr.sortWith(_.get("points").getOrElse("0").toLong < _.get("points").getOrElse("0").toLong)` 

回答

3

可以使用sortBy功能:

arr.sortBy((m: Map[String, String]) => ((m.getOrElse("points", "0").toLong, m.get("name")))) 

上面的代码片段会先按点排序(从小到大),然后按名称(asc)按字母顺序打破任何关系。

传递给sortBy函数的函数“comparator”可能会返回一个元组值(一个或多个要进行排序的鉴别器)。所以在这种情况下,我回来了(积分,姓名)