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)`
4

1 回答 1

3

您可以使用sortBy函数:

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

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

传递给sortBy函数的函数“比较器”可以返回一个值,该值是一个元组(一个或多个用于排序的鉴别器)。所以在这种情况下,我要返回 ( points, name )

于 2013-04-28T03:22:32.617 回答